@veltdev/sdk-staging 5.0.2-beta.41 → 5.0.2-beta.42
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/package.json +1 -1
- package/velt.js +2 -2
package/velt.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
var SNIPPYLY_VERSION = '5.0.2-beta.
|
|
1
|
+
var SNIPPYLY_VERSION = '5.0.2-beta.42';
|
|
2
2
|
(function(c,E){"use strict";function U(){var e=X.splice(0,X.length);for(ue=0;e.length;)e.shift().call(null,e.shift())}function fe(e,t){for(var n=0,r=e.length;n<r;n++)Le(e[n],t)}function ot(e){for(var t,n=0,r=e.length;n<r;n++)t=e[n],_(t,B[pe(t)])}function de(e){return function(t){Lt(t)&&(Le(t,e),L.length&&fe(t.querySelectorAll(L),e))}}function pe(e){var t=ae.call(e,"is"),n=e.nodeName.toUpperCase(),r=H.call(D,t?J+t.toUpperCase():q+n);return t&&-1<r&&!Ie(n,t)?-1:r}function Ie(e,t){return-1<L.indexOf(e+'[is="'+t+'"]')}function Fe(e){var t=e.currentTarget,n=e.attrChange,r=e.attrName,o=e.target,l=e[Y]||2,a=e[ge]||3;!se||o&&o!==t||!t[C]||r==="style"||e.prevValue===e.newValue&&(e.newValue!==""||n!==l&&n!==a)||t[C](r,n===l?null:e.prevValue,n===a?null:e.newValue)}function Se(e){var t=de(e);return function(n){X.push(t,n.target),ue&&clearTimeout(ue),ue=setTimeout(U,1)}}function he(e){rt&&(rt=!1,e.currentTarget.removeEventListener(Ze,he)),L.length&&fe((e.target||u).querySelectorAll(L),e.detail===v?v:y),R&&at()}function lt(e,t){var n=this;Je.call(n,e,t),Ee.call(n,{target:n})}function Pe(e,t,n){var r=t.apply(e,n),o=pe(r);return-1<o&&_(r,B[o]),n.pop()&&L.length&&ot(r.querySelectorAll(L)),r}function Te(e,t){Tt(e,t),Q?Q.observe(e,gt):(ce&&(e.setAttribute=lt,e[g]=ve(e),e[b](st,Ee)),e[b](N,Fe)),e[x]&&se&&(e.created=!0,e[x](),e.created=!1)}function at(){for(var e,t=0,n=z.length;t<n;t++)e=z[t],P.contains(e)||(n--,z.splice(t--,1),Le(e,v))}function Ve(e){throw new Error("A "+e+" type is already registered")}function Le(e,t){var n,r,o=pe(e);-1<o&&!Mt.call(e,"TEMPLATE")&&(W(e,B[o]),o=0,t!==y||e[y]?t!==v||e[v]||(e[y]=!1,e[v]=!0,r="disconnected",o=1):(e[v]=!1,e[y]=!0,r="connected",o=1,R&&H.call(z,e)<0&&z.push(e)),o&&(n=e[t+O]||e[r+O])&&n.call(e))}function K(){}function Re(e,t,n){var r=n&&n[k]||"",o=t.prototype,l=we(o),a=t.observedAttributes||Ce,m={prototype:l};le(l,x,{value:function(){if(ne)ne=!1;else if(!this[j]){this[j]=!0,new t(this),o[x]&&o[x].call(this);var i=G[re.get(t)];(!Z||i.create.length>1)&&ke(this)}}}),le(l,C,{value:function(i){-1<H.call(a,i)&&o[C]&&o[C].apply(this,arguments)}}),o[Be]&&le(l,ut,{value:o[Be]}),o[je]&&le(l,ct,{value:o[je]}),r&&(m[k]=r),e=e.toUpperCase(),G[e]={constructor:t,create:r?[r,oe(e)]:[e]},re.set(t,e),u[S](e.toLowerCase(),m),Me(e),V[e].r()}function Ue(e){var t=G[e.toUpperCase()];return t&&t.constructor}function _e(e){return typeof e=="string"?e:e&&e.is||""}function ke(e){for(var t,n=e[C],r=n?e.attributes:Ce,o=r.length;o--;)t=r[o],n.call(e,t.name||t.nodeName,null,t.value||t.nodeValue)}function Me(e){return e=e.toUpperCase(),e in V||(V[e]={},V[e].p=new $e(function(t){V[e].r=t})),V[e].p}function xe(){w&&delete c.customElements,I(c,"customElements",{configurable:!0,value:new K}),I(c,"CustomElementRegistry",{configurable:!0,value:K});for(var e=it.get(/^HTML[A-Z]*[a-z]/),t=e.length;t--;(function(n){var r=c[n];if(r){c[n]=function(o){var l,a;return o||(o=this),o[j]||(ne=!0,l=G[re.get(o.constructor)],a=Z&&l.create.length===1,o=a?Reflect.construct(r,Ce,l.constructor):u.createElement.apply(u,l.create),o[j]=!0,ne=!1,a||ke(o)),o},c[n].prototype=r.prototype;try{r.prototype.constructor=c[n]}catch{pt=!0,I(r,j,{value:c[n]})}}})(e[t]));u.createElement=function(n,r){var o=_e(r);return o?Oe.call(this,n,oe(o)):Oe.call(this,n)},tt||(Ne=!0,u[S](""))}var u=c.document,T=c.Object,it=(function(e){var t,n,r,o,l=/^[A-Z]+[a-z]/,a=function(d){var f,h=[];for(f in i)d.test(f)&&h.push(f);return h},m=function(d,f){(f=f.toLowerCase())in i||(i[d]=(i[d]||[]).concat(f),i[f]=i[f.toUpperCase()]=d)},i=(T.create||T)(null),s={};for(n in e)for(o in e[n])for(r=e[n][o],i[o]=r,t=0;t<r.length;t++)i[r[t].toLowerCase()]=i[r[t].toUpperCase()]=o;return s.get=function(d){return typeof d=="string"?i[d]||(l.test(d)?[]:""):a(d)},s.set=function(d,f){return l.test(d)?m(d,f):m(f,d),s},s})({collections:{HTMLAllCollection:["all"],HTMLCollection:["forms"],HTMLFormControlsCollection:["elements"],HTMLOptionsCollection:["options"]},elements:{Element:["element"],HTMLAnchorElement:["a"],HTMLAppletElement:["applet"],HTMLAreaElement:["area"],HTMLAttachmentElement:["attachment"],HTMLAudioElement:["audio"],HTMLBRElement:["br"],HTMLBaseElement:["base"],HTMLBodyElement:["body"],HTMLButtonElement:["button"],HTMLCanvasElement:["canvas"],HTMLContentElement:["content"],HTMLDListElement:["dl"],HTMLDataElement:["data"],HTMLDataListElement:["datalist"],HTMLDetailsElement:["details"],HTMLDialogElement:["dialog"],HTMLDirectoryElement:["dir"],HTMLDivElement:["div"],HTMLDocument:["document"],HTMLElement:["element","abbr","address","article","aside","b","bdi","bdo","cite","code","command","dd","dfn","dt","em","figcaption","figure","footer","header","i","kbd","mark","nav","noscript","rp","rt","ruby","s","samp","section","small","strong","sub","summary","sup","u","var","wbr"],HTMLEmbedElement:["embed"],HTMLFieldSetElement:["fieldset"],HTMLFontElement:["font"],HTMLFormElement:["form"],HTMLFrameElement:["frame"],HTMLFrameSetElement:["frameset"],HTMLHRElement:["hr"],HTMLHeadElement:["head"],HTMLHeadingElement:["h1","h2","h3","h4","h5","h6"],HTMLHtmlElement:["html"],HTMLIFrameElement:["iframe"],HTMLImageElement:["img"],HTMLInputElement:["input"],HTMLKeygenElement:["keygen"],HTMLLIElement:["li"],HTMLLabelElement:["label"],HTMLLegendElement:["legend"],HTMLLinkElement:["link"],HTMLMapElement:["map"],HTMLMarqueeElement:["marquee"],HTMLMediaElement:["media"],HTMLMenuElement:["menu"],HTMLMenuItemElement:["menuitem"],HTMLMetaElement:["meta"],HTMLMeterElement:["meter"],HTMLModElement:["del","ins"],HTMLOListElement:["ol"],HTMLObjectElement:["object"],HTMLOptGroupElement:["optgroup"],HTMLOptionElement:["option"],HTMLOutputElement:["output"],HTMLParagraphElement:["p"],HTMLParamElement:["param"],HTMLPictureElement:["picture"],HTMLPreElement:["pre"],HTMLProgressElement:["progress"],HTMLQuoteElement:["blockquote","q","quote"],HTMLScriptElement:["script"],HTMLSelectElement:["select"],HTMLShadowElement:["shadow"],HTMLSlotElement:["slot"],HTMLSourceElement:["source"],HTMLSpanElement:["span"],HTMLStyleElement:["style"],HTMLTableCaptionElement:["caption"],HTMLTableCellElement:["td","th"],HTMLTableColElement:["col","colgroup"],HTMLTableElement:["table"],HTMLTableRowElement:["tr"],HTMLTableSectionElement:["thead","tbody","tfoot"],HTMLTemplateElement:["template"],HTMLTextAreaElement:["textarea"],HTMLTimeElement:["time"],HTMLTitleElement:["title"],HTMLTrackElement:["track"],HTMLUListElement:["ul"],HTMLUnknownElement:["unknown","vhgroupv","vkeygen"],HTMLVideoElement:["video"]},nodes:{Attr:["node"],Audio:["audio"],CDATASection:["node"],CharacterData:["node"],Comment:["#comment"],Document:["#document"],DocumentFragment:["#document-fragment"],DocumentType:["node"],HTMLDocument:["#document"],Image:["img"],Option:["option"],ProcessingInstruction:["node"],ShadowRoot:["#shadow-root"],Text:["#text"],XMLDocument:["xml"]}});typeof E!="object"&&(E={type:E||"auto"});var X,Ee,$,ve,Q,He,W,_,A,S="registerElement",qe=1e5*c.Math.random()>>0,g="__"+S+qe,b="addEventListener",y="attached",O="Callback",v="detached",k="extends",C="attributeChanged"+O,ut=y+O,Be="connected"+O,je="disconnected"+O,x="created"+O,ct=v+O,Y="ADDITION",ge="REMOVAL",N="DOMAttrModified",Ze="DOMContentLoaded",st="DOMSubtreeModified",q="<",J="=",mt=/^[A-Z][._A-Z0-9]*-[-._A-Z0-9]*$/,ft=["ANNOTATION-XML","COLOR-PROFILE","FONT-FACE","FONT-FACE-SRC","FONT-FACE-URI","FONT-FACE-FORMAT","FONT-FACE-NAME","MISSING-GLYPH"],D=[],B=[],L="",P=u.documentElement,H=D.indexOf||function(e){for(var t=this.length;t--&&this[t]!==e;);return t},be=T.prototype,ye=be.hasOwnProperty,ee=be.isPrototypeOf,I=T.defineProperty,Ce=[],te=T.getOwnPropertyDescriptor,Ge=T.getOwnPropertyNames,dt=T.getPrototypeOf,ze=T.setPrototypeOf,Ke=!!T.__proto__,pt=!1,j="__dreCEv1",w=c.customElements,Z=!/^force/.test(E.type)&&!!(w&&w.define&&w.get&&w.whenDefined),Xe=T.create||T,ht=c.Map||function(){var e,t=[],n=[];return{get:function(r){return n[H.call(t,r)]},set:function(r,o){e=H.call(t,r),e<0?n[t.push(r)-1]=o:n[e]=o}}},$e=c.Promise||function(e){function t(l){for(r=!0;n.length;)n.shift()(l)}var n=[],r=!1,o={catch:function(){return o},then:function(l){return n.push(l),r&&setTimeout(t,1),o}};return e(t),o},ne=!1,G=Xe(null),V=Xe(null),re=new ht,oe=function(e){return e.toLowerCase()},we=T.create||function e(t){return t?(e.prototype=t,new e):this},Tt=ze||(Ke?function(e,t){return e.__proto__=t,e}:Ge&&te?(function(){function e(t,n){for(var r,o=Ge(n),l=0,a=o.length;l<a;l++)r=o[l],ye.call(t,r)||I(t,r,te(n,r))}return function(t,n){do e(t,n);while((n=dt(n))&&!ee.call(n,t));return t}})():function(e,t){for(var n in t)e[n]=t[n];return e}),F=c.MutationObserver||c.WebKitMutationObserver,Qe=c.HTMLAnchorElement,p=(c.HTMLElement||c.Element||c.Node).prototype,R=!ee.call(p,P),le=R?function(e,t,n){return e[t]=n.value,e}:I,Lt=R?function(e){return e.nodeType===1}:function(e){return ee.call(p,e)},z=R&&[],We=p.attachShadow,Ye=p.cloneNode,Mt=p.closest||function(e){for(var t=this;t&&t.nodeName!==e;)t=t.parentNode;return t},Ae=p.dispatchEvent,ae=p.getAttribute,Et=p.hasAttribute,vt=p.removeAttribute,Je=p.setAttribute,ie=u.createElement,Ht=u.importNode,Oe=ie,gt=F&&{attributes:!0,characterData:!0,attributeOldValue:!0},et=F||function(e){ce=!1,P.removeEventListener(N,et)},ue=0,tt=S in u&&!/^force-all/.test(E.type),nt=!0,Ne=!1,ce=!0,rt=!0,se=!0;if(F&&(A=u.createElement("div"),A.innerHTML="<div><div></div></div>",new F(function(e,t){if(e[0]&&e[0].type=="childList"&&!e[0].removedNodes[0].childNodes.length){A=te(p,"innerHTML");var n=A&&A.set;n&&I(p,"innerHTML",{set:function(r){for(;this.lastChild;)this.removeChild(this.lastChild);n.call(this,r)}})}t.disconnect(),A=null}).observe(A,{childList:!0,subtree:!0}),A.innerHTML=""),tt||(ze||Ke?(W=function(e,t){ee.call(t,e)||Te(e,t)},_=Te):(W=function(e,t){e[g]||(e[g]=T(!0),Te(e,t))},_=W),R?(ce=!1,(function(){var e=te(p,b),t=e.value,n=function(l){var a=new CustomEvent(N,{bubbles:!0});a.attrName=l,a.prevValue=ae.call(this,l),a.newValue=null,a[ge]=a.attrChange=2,vt.call(this,l),Ae.call(this,a)},r=function(l,a){var m=Et.call(this,l),i=m&&ae.call(this,l),s=new CustomEvent(N,{bubbles:!0});Je.call(this,l,a),s.attrName=l,s.prevValue=m?i:null,s.newValue=a,m?s.MODIFICATION=s.attrChange=1:s[Y]=s.attrChange=0,Ae.call(this,s)},o=function(l){var a,m=l.currentTarget,i=m[g],s=l.propertyName;i.hasOwnProperty(s)&&(i=i[s],a=new CustomEvent(N,{bubbles:!0}),a.attrName=i.name,a.prevValue=i.value||null,a.newValue=i.value=m[s]||null,a.prevValue==null?a[Y]=a.attrChange=0:a.MODIFICATION=a.attrChange=1,Ae.call(m,a))};e.value=function(l,a,m){l===N&&this[C]&&this.setAttribute!==r&&(this[g]={className:{name:"class",value:this.className}},this.setAttribute=r,this.removeAttribute=n,t.call(this,"propertychange",o)),t.call(this,l,a,m)},I(p,b,e)})()):F||(P[b](N,et),P.setAttribute(g,1),P.removeAttribute(g),ce&&(Ee=function(e){var t,n,r,o=this;if(o===e.target){t=o[g],o[g]=n=ve(o);for(r in n){if(!(r in t))return $(0,o,r,t[r],n[r],Y);if(n[r]!==t[r])return $(1,o,r,t[r],n[r],"MODIFICATION")}for(r in t)if(!(r in n))return $(2,o,r,t[r],n[r],ge)}},$=function(e,t,n,r,o,l){var a={attrChange:e,currentTarget:t,attrName:n,prevValue:r,newValue:o};a[l]=e,Fe(a)},ve=function(e){for(var t,n,r={},o=e.attributes,l=0,a=o.length;l<a;l++)t=o[l],(n=t.name)!=="setAttribute"&&(r[n]=t.value);return r})),u[S]=function(e,t){if(n=e.toUpperCase(),nt&&(nt=!1,F?(Q=(function(i,s){function d(f,h){for(var M=0,me=f.length;M<me;h(f[M++]));}return new F(function(f){for(var h,M,me,De=0,bt=f.length;De<bt;De++)h=f[De],h.type==="childList"?(d(h.addedNodes,i),d(h.removedNodes,s)):(M=h.target,se&&M[C]&&h.attributeName!=="style"&&(me=ae.call(M,h.attributeName))!==h.oldValue&&M[C](h.attributeName,h.oldValue,me))})})(de(y),de(v)),He=function(i){return Q.observe(i,{childList:!0,subtree:!0}),i},He(u),We&&(p.attachShadow=function(){return He(We.apply(this,arguments))})):(X=[],u[b]("DOMNodeInserted",Se(y)),u[b]("DOMNodeRemoved",Se(v))),u[b](Ze,he),u[b]("readystatechange",he),u.importNode=function(i,s){switch(i.nodeType){case 1:return Pe(u,Ht,[i,!!s]);case 11:for(var d=u.createDocumentFragment(),f=i.childNodes,h=f.length,M=0;M<h;M++)d.appendChild(u.importNode(f[M],!!s));return d;default:return Ye.call(i,!!s)}},p.cloneNode=function(i){return Pe(this,Ye,[!!i])}),Ne)return Ne=!1;if(-2<H.call(D,J+n)+H.call(D,q+n)&&Ve(e),!mt.test(n)||-1<H.call(ft,n))throw new Error("The type "+e+" is invalid");var n,r,o=function(){return a?u.createElement(m,n):u.createElement(m)},l=t||be,a=ye.call(l,k),m=a?t[k].toUpperCase():n;return a&&-1<H.call(D,q+m)&&Ve(m),r=D.push((a?J:q)+n)-1,L=L.concat(L.length?",":"",a?m+'[is="'+e.toLowerCase()+'"]':m),o.prototype=B[r]=ye.call(l,"prototype")?l.prototype:we(p),L.length&&fe(u.querySelectorAll(L),y),o},u.createElement=Oe=function(e,t){var n=_e(t),r=n?ie.call(u,e,oe(n)):ie.call(u,e),o=""+e,l=H.call(D,(n?J:q)+(n||o).toUpperCase()),a=-1<l;return n&&(r.setAttribute("is",n=n.toLowerCase()),a&&(a=Ie(o.toUpperCase(),n))),se=!u.createElement.innerHTMLHelper,a&&_(r,B[l]),r}),addEventListener("beforeunload",function(){delete u.createElement,delete u.importNode,delete u[S]},!1),K.prototype={constructor:K,define:Z?function(e,t,n){if(n)Re(e,t,n);else{var r=e.toUpperCase();G[r]={constructor:t,create:[r]},re.set(t,r),w.define(e,t)}}:Re,get:Z?function(e){return w.get(e)||Ue(e)}:Ue,whenDefined:Z?function(e){return $e.race([w.whenDefined(e),Me(e)])}:Me},!w||/^force/.test(E.type))xe();else if(!E.noBuiltIn)try{(function(e,t,n){var r=new RegExp(`^<a\\s+is=('|")`+n+"\\1></a>$");if(t[k]="a",e.prototype=we(Qe.prototype),e.prototype.constructor=e,c.customElements.define(n,e,t),!r.test(u.createElement("a",{is:n}).outerHTML)||!r.test(new e().outerHTML))throw t})(function e(){return Reflect.construct(Qe,[],e)},{},"document-register-element-a"+qe)}catch{xe()}if(!E.noBuiltIn)try{if(ie.call(u,"a","a").outerHTML.indexOf("is")<0)throw{}}catch{oe=function(t){return{is:t.toLowerCase()}}}})(window);Promise.allSettled||(Promise.allSettled=function(c){return Promise.all(c.map(function(E){return Promise.resolve(E).then(function(U){return{status:"fulfilled",value:U}}).catch(function(U){return{status:"rejected",reason:U}})}))});
|
|
3
3
|
|
|
4
4
|
var R3e=Object.create;var W5=Object.defineProperty,N3e=Object.defineProperties,F3e=Object.getOwnPropertyDescriptor,L3e=Object.getOwnPropertyDescriptors,U3e=Object.getOwnPropertyNames,z5=Object.getOwnPropertySymbols,$te=Object.getPrototypeOf,aB=Object.prototype.hasOwnProperty,Hte=Object.prototype.propertyIsEnumerable,V3e=Reflect.get;var jte=(n,o,r)=>o in n?W5(n,o,{enumerable:!0,configurable:!0,writable:!0,value:r}):n[o]=r,f=(n,o)=>{for(var r in o||={})aB.call(o,r)&&jte(n,r,o[r]);if(z5)for(var r of z5(o))Hte.call(o,r)&&jte(n,r,o[r]);return n},k=(n,o)=>N3e(n,L3e(o));var Dh=(n,o)=>{var r={};for(var e in n)aB.call(n,e)&&o.indexOf(e)<0&&(r[e]=n[e]);if(n!=null&&z5)for(var e of z5(n))o.indexOf(e)<0&&Hte.call(n,e)&&(r[e]=n[e]);return r};var B3e=(n,o)=>()=>(o||n((o={exports:{}}).exports,o),o.exports),q5=(n,o)=>{for(var r in o)W5(n,r,{get:o[r],enumerable:!0})},j3e=(n,o,r,e)=>{if(o&&typeof o=="object"||typeof o=="function")for(let t of U3e(o))!aB.call(n,t)&&t!==r&&W5(n,t,{get:()=>o[t],enumerable:!(e=F3e(o,t))||e.enumerable});return n};var Gte=(n,o,r)=>(r=n!=null?R3e($te(n)):{},j3e(o||!n||!n.__esModule?W5(r,"default",{value:n,enumerable:!0}):r,n));var Cm=(n,o,r)=>V3e($te(n),r,o);var Q=(n,o,r)=>new Promise((e,t)=>{var i=s=>{try{l(r.next(s))}catch(d){t(d)}},a=s=>{try{l(r.throw(s))}catch(d){t(d)}},l=s=>s.done?e(s.value):Promise.resolve(s.value).then(i,a);l((r=r.apply(n,o)).next())});var lte=B3e((G0i,ate)=>{"use strict";var Nt={};Nt.generateIdentifier=function(){return Math.random().toString(36).substring(2,12)};Nt.localCName=Nt.generateIdentifier();Nt.splitLines=function(n){return n.trim().split(`
|
|
@@ -405,7 +405,7 @@ This typically indicates that your device does not have a healthy Internet conne
|
|
|
405
405
|
</radialGradient>
|
|
406
406
|
</defs>
|
|
407
407
|
</svg>
|
|
408
|
-
`},o.GIF_PATHS={CAT_JAM:"https://firebasestorage.googleapis.com/v0/b/snippyly-sdk-external/o/emojis%2Fcatjam.gif?alt=media&token=9868b4ec-0031-4751-bb2e-47bf0f9d9583"},o.\u0275fac=function(t){return new(t||o)(X(Be),X(x),X(Rd))},o.\u0275prov=Me({token:o,factory:o.\u0275fac,providedIn:"root"});let n=o;return n})();var dn=(()=>{let o=class o{constructor(e,t,i,a,l,s,d,g,u){this.analyticsService=e,this.authService=t,this.configService=i,this.coreActionsService=a,this.databaseService=l,this.docService=s,this.loggingService=d,this.commonDbService=g,this.usersService=u,this.db=null,this.internalUserContacts$=new Se([]),this.userGlobalContact$=new Se(!1),this.userGroupContact$=new Se(null),this.users$=new Se([]),this.userPersonalContacts=[],this.userGroupContacts=[],this.userGlobalContacts=[],this.users=[],this.documentPaths=null,this.userAccessFields$=new Se({}),this.userOrganizationContacts$=new Se([]),this.userFolderContacts$=new Se([]),this.userDocumentContacts$=new Se([]),this.userOrganizationGroups$=new Se([]),this.onContactSelectedSubject$=new it,this.documentAccessType=null,this.atHereEnabled$=new Se(!1),this.atHereLabel$=new Se("here"),this.atHereDescription$=new Se(null),this.contactListScopeForOrganizationUsers$=new Se([fo.ALL]),this.customUserContacts$=new Se(null),this.customUserContactsConfig$=new Se({merge:!1}),this.currentOrganizationUserIAM$=new Se(null),this.userContacts$=new Se([]),this.userSnippylyIdContacts$=new Se(null),this.usersByOrganizationId$=new Se({}),this.temporaryUserIds$=new Se([]),this.usersByOrganizationIdAndDocumentId$=new Se({}),this.usersByOrganizationIdAndFolderId$=new Se({}),this.userById$=new Se({}),this.searchUsersSubject$=new it,this.searchUsersDebounceTime=300,this.pendingSearchPromises=new Map,this.authService.setContactService(this),this.usersService.setContactService(this),this.authService.getUser$().pipe(_e(b=>this.docService.getDocumentPaths$().pipe(on(E=>{this.documentPaths=E}),ue(()=>b)))).subscribe(b=>Q(this,null,function*(){if(this.user=b,b&&this.documentPaths)if(!b?.organizationId)this.getLoggedInUsers$().subscribe(),this.getUserContactsFromDb$(),yield this.migrateLoggedInUserFromEmailToUserIdPath(b),this.setLoggedInUser(b),yield this.moveGlobalContactUserFromEmailToUserIdPath(b),this.updateUserInGlobalContactsIfAvailable(b),b?.groupId&&(yield this.migrateGroupContactsFromEmailToUserIdPath(b?.groupId)),this.checkToSetLoggedInUserInGroupContacts();else{let E=this.userPermissionService?.getCurrentUserPermissions(),A=this.documentPaths.folderId,M=!0;A&&E?.[b?.userId]?.folders?.[A]?.errorCode===_o.PERMISSION_DENIED&&(M=!1),this.getOrganizationContactsFromDb$(),M&&this.getFolderContactsFromDb$(),this.getDocumentContactsFromDb$(),this.getOrganizationGroupsFromDb$(),this.getTemporaryUsers()}else this.getUserContactSubscription?.unsubscribe(),this.getUserContactSubscription=void 0,this.getLoggedInUsersSubscription?.unsubscribe(),this.getLoggedInUsersSubscription=void 0,this.getOrganizationContactsSubscription?.unsubscribe(),this.getOrganizationContactsSubscription=void 0,this.getFolderContactsSubscription?.unsubscribe(),this.getFolderContactsSubscription=void 0,this.getDocumentContactsSubscription?.unsubscribe(),this.getDocumentContactsSubscription=void 0,this.getOrganizationGroupsSubscription?.unsubscribe(),this.getOrganizationGroupsSubscription=void 0}),b=>{this.loggingService.catch("Error in ContactService constructor getUser$: ",b)}),this.databaseService.getDb().pipe($e(b=>!!b),ut(1)).subscribe(b=>{b&&(this.db=b)},b=>{this.loggingService.catch("Error in ContactService constructor getDb: ",b)}),this.getOrganizationGroups$().subscribe(b=>{this.authService.setOrganizationUserGroups(b)}),pn([this.getInternalUserContacts$(),this.getCustomUserContacts$(),this.getCustomUserContactsConfig$()]).subscribe(([b,E,A])=>{E?A?.merge?this.userContacts$.next([...b||[],...E||[]]):this.userContacts$.next(E||[]):this.userContacts$.next(b||[])}),this.getUserContacts$().subscribe(b=>{try{b?.forEach(E=>{let A=E?.userSnippylyId||Qc(this.configService.getApiKey(),E.userId);A&&this.userSnippylyIdContacts$.next(k(f({},this.userSnippylyIdContacts$.value),{[A]:E}))})}catch{}})}setCommentService(e){try{this.commentService=e}catch(t){this.loggingService.catch("Error in ContactService setCommentService: ",t)}}setUserPermissionService(e){try{this.userPermissionService=e}catch(t){this.loggingService.catch("Error in ContactService setUserPermissionService: ",t)}}clearCache(){this.loggingService.log("%c[WB] Calling FUNCTION: clearCache in ContactService","color: green;");try{this.documentPaths=null,this.usersByOrganizationId$.next({}),this.temporaryUserIds$.next([]),this.usersByOrganizationIdAndFolderId$.next({}),this.usersByOrganizationIdAndDocumentId$.next({}),this.userById$.next({}),this.userOrganizationContacts$.next([]),this.userFolderContacts$.next([]),this.userDocumentContacts$.next([]),this.userOrganizationGroups$.next([]),this.userContacts$.next([]),this.userSnippylyIdContacts$.next(null),this.userGlobalContact$.next(!1),this.userGroupContact$.next(null),this.users$.next([]),this.userPersonalContacts=[],this.userGroupContacts=[],this.userGlobalContacts=[],this.users=[],this.currentOrganizationUserIAM$.next(null)}catch(e){this.loggingService.catch("Error in ContactService clearCache: ",e)}}setDocumentAccessType(e){try{this.documentAccessType=e}catch(t){this.loggingService.catch("Error in ContactService setDocumentAccessType: ",t)}}checkIfUserGlobalContact(e){return Q(this,null,function*(){try{if(e?.userId&&this.documentPaths?.globalContacts){let t=yield this.commonDbService?.getData({feature:"globalContacts",properties:{documentId:this.documentPaths?.documentId??"",organizationId:this.documentPaths?.organizationId??"",userId:It(e?.userId),skipFirestore:!0}});if(Object.keys(t??{}).length>0)return!0}if(e?.email&&this.documentPaths?.globalContacts){let t=yield this.commonDbService?.getData({feature:"globalContacts",properties:{documentId:this.documentPaths?.documentId??"",organizationId:this.documentPaths?.organizationId??"",userId:It(e?.email),skipFirestore:!0}});if(Object.keys(t??{}).length>0)return!0}return!1}catch(t){return this.loggingService.catch("Error in ContactService isUserGlobalContact: ",t),!1}})}setLoggedInUser(e){try{e?.userId&&this.documentPaths?.logins&&(this.commonDbService.updateData({feature:"logins",properties:{documentId:this.documentPaths?.documentId??"",organizationId:this.documentPaths?.organizationId??"",userId:It(e?.userId),skipFirestore:!0},data:JSON.parse(JSON.stringify(k(f({},e),{contacts:void 0})))}),this.setLoggedInUserPrivateContacts(e,e?.contacts))}catch(t){this.loggingService.catch("Error in ContactService setLoggedInUser: ",t)}}migrateLoggedInUserFromEmailToUserIdPath(e){return Q(this,null,function*(){try{if(e?.email&&this.documentPaths?.logins){let t=yield this.commonDbService?.getData({feature:"logins",properties:{documentId:this.documentPaths?.documentId??"",organizationId:this.documentPaths?.organizationId??"",userId:It(e?.email),skipFirestore:!0}});if(Object.keys(t??{}).length>0){let i=t;if(i){if(i?.contacts){let a={};Object.keys(i?.contacts??{})?.forEach(l=>{let s=i.contacts[l];if(s?.userId){let d=It(s?.userId);a[d]=s}}),i.contacts=a}yield this.commonDbService.updateData({feature:"logins",properties:{documentId:this.documentPaths?.documentId??"",organizationId:this.documentPaths?.organizationId??"",userId:It(e?.userId),skipFirestore:!0},data:JSON.parse(JSON.stringify(i))}),yield this.commonDbService.deleteData({feature:"logins",properties:{documentId:this.documentPaths?.documentId??"",organizationId:this.documentPaths?.organizationId??"",userId:It(e?.email),skipFirestore:!0}})}}}}catch(t){this.loggingService.catch("Error in ContactService migrateLoggedInUserFromEmailToUserIdPath: ",t)}})}addGlobalContact(e){try{e?.userId&&this.documentPaths?.globalContacts&&this.commonDbService.updateData({feature:"globalContacts",properties:{documentId:this.documentPaths?.documentId??"",organizationId:this.documentPaths?.organizationId??"",userId:It(e?.userId),skipFirestore:!0},data:JSON.parse(JSON.stringify(e))})}catch(t){this.loggingService.catch("Error in ContactService addGlobalContact: ",t)}}getUserAccessFields(){return JSON.parse(JSON.stringify(this.userAccessFields$.value))}getUserAccessFieldsByUserId(e){return this.getUserAccessFields()?.[e]}setUserAccessFields(e){try{let t=this.getUserAccessFields();e.forEach(a=>{t[a.user.userId]=a.accessFields||[]});let i=this.authService.getUser()?.userId;if(i&&t?.[i]?.length){let a=this.userPermissionService?.getCurrentUserPermissions();a&&(a[i]||(a[i]={}),a[i].context={accessFields:t[i]},this.userPermissionService?.setCurrentUserPermissions(a))}this.userAccessFields$.next(JSON.parse(JSON.stringify(t)))}catch(t){this.loggingService.catch("Error in ContactService setUserAccessFields: ",t)}}updateUserInGlobalContactsIfAvailable(e){return Q(this,null,function*(){try{if(e?.userId&&this.documentPaths?.globalContacts&&(yield this.checkIfUserGlobalContact(e))){let i=new ra;i.userId=e?.userId,i.userSnippylyId=e?.userSnippylyId,i.email=e?.email,i.name=e?.name,i.photoUrl=e?.photoUrl,this.commonDbService.updateData({feature:"globalContacts",properties:{documentId:this.documentPaths?.documentId??"",organizationId:this.documentPaths?.organizationId??"",userId:It(e?.userId),skipFirestore:!0},data:JSON.parse(JSON.stringify(i))})}}catch(t){this.loggingService.catch("Error in ContactService updateUserInGlobalContactsIfAvailable: ",t)}})}moveGlobalContactUserFromEmailToUserIdPath(e){return Q(this,null,function*(){try{if(e?.email&&e?.userId&&this.documentPaths?.globalContacts){let t=yield this.commonDbService?.getData({feature:"globalContacts",properties:{documentId:this.documentPaths?.documentId??"",organizationId:this.documentPaths?.organizationId??"",userId:It(e?.email),skipFirestore:!0}});if(Object.keys(t??{}).length>0){let i=t;i&&(yield this.commonDbService.updateData({feature:"globalContacts",properties:{documentId:this.documentPaths?.documentId??"",organizationId:this.documentPaths?.organizationId??"",userId:It(e?.userId),skipFirestore:!0},data:JSON.parse(JSON.stringify(i))}),yield this.commonDbService.deleteData({feature:"globalContacts",properties:{documentId:this.documentPaths?.documentId??"",organizationId:this.documentPaths?.organizationId??"",userId:It(e?.email),skipFirestore:!0}}))}}}catch(t){this.loggingService.catch("Error in ContactService removeUserFromGlobalContactsByEmail: ",t)}})}setLoggedInUserPrivateContacts(e,t){try{if(e?.userId&&this.documentPaths?.logins){let i,a=t?.filter(s=>s?.visibility!=="group"),l=!1;this.authService.getUserOptions()&&(l=!!this.authService.getUserOptions()?.replaceContacts||!!this.authService.getUserOptions()?.replacePrivateContacts),a?.length?(i={},a?.forEach(s=>{if(s?.userId){let d=It(s?.userId);i[d]=s}}),l?this.commonDbService.setData({feature:"allLoginContacts",properties:{documentId:this.documentPaths?.documentId??"",organizationId:this.documentPaths?.organizationId??"",userId:It(e?.userId),skipFirestore:!0},data:JSON.parse(JSON.stringify(i))}):this.commonDbService.updateData({feature:"allLoginContacts",properties:{documentId:this.documentPaths?.documentId??"",organizationId:this.documentPaths?.organizationId??"",userId:It(e?.userId),skipFirestore:!0},data:JSON.parse(JSON.stringify(i))})):l&&this.commonDbService.deleteData({feature:"allLoginContacts",properties:{documentId:this.documentPaths?.documentId??"",organizationId:this.documentPaths?.organizationId??"",userId:It(e?.userId),skipFirestore:!0}})}}catch(i){this.loggingService.catch("Error in ContactService setLoggedInUserPrivateContacts: ",i)}}migrateGroupContactsFromEmailToUserIdPath(e){return Q(this,null,function*(){try{if(this.documentPaths?.groupContacts&&e){let t=yield this.commonDbService?.getData({feature:"groupContacts",properties:{documentId:this.documentPaths?.documentId??"",organizationId:this.documentPaths?.organizationId??"",groupId:e,skipFirestore:!0}});t&&Object.keys(t??{}).forEach(i=>Q(this,null,function*(){let a=t[i];a?.email&&a?.userId&&It(a?.email)===i&&(yield this.commonDbService.deleteData({feature:"groupContactsUser",properties:{documentId:this.documentPaths?.documentId??"",organizationId:this.documentPaths?.organizationId??"",groupId:e,userId:i,skipFirestore:!0}}),yield this.commonDbService.updateData({feature:"groupContactsUser",properties:{documentId:this.documentPaths?.documentId??"",organizationId:this.documentPaths?.organizationId??"",groupId:e,userId:It(a?.userId),skipFirestore:!0},data:JSON.parse(JSON.stringify(a))}))}))}}catch(t){this.loggingService.catch("Error in ContactService migrateGroupContacts: ",t)}})}checkToSetLoggedInUserInGroupContacts(){return Q(this,null,function*(){try{this.user?.groupId&&this.user?.userId&&((yield this.checkIfUserGlobalContact(this.user))||this.docService.getDocumentIam$().pipe(ut(1)).subscribe(t=>Q(this,null,function*(){if(this.user?.groupId&&this.user?.userId){let i=!1,a=this.docService.getDocumentAccessType(t);if(!a||a===zr.PUBLIC)i=!0;else if(a===zr.RESTRICTED){let l=It(this.user?.userId);if(t?.users?.[l]&&(i=!0),this.user?.email){let s=It(this.user?.email);t?.users?.[s]&&(i=!0)}}if(i){let l=new im;l.email=this.user.email,l.visibility="group",l.name=this.user.name,l.photoUrl=this.user.photoUrl,l.userId=this.user.userId,(this.authService.getUserOptions()?.replaceContacts||this.authService.getUserOptions()?.replaceGroupContacts)&&(yield this.removeGroupContacts(this.user?.groupId)),this.setLoggedInUserGroupContacts(this.user?.groupId,[l]),this.user?.contacts&&this.user?.groupId&&this.setLoggedInUserGroupContacts(this.user?.groupId,this.user?.contacts)}}})))}catch(e){this.loggingService.catch("Error in ContactService checkToSetLoggedInUserInGroupContacts: ",e)}})}setLoggedInUserGroupContacts(e,t){try{let i=t?.filter(a=>a?.visibility==="group");i?.length&&i.forEach(a=>Q(this,null,function*(){if(a?.userId&&e&&this.documentPaths?.groupContacts){if(this.configService?.getSF()&&(yield this.checkIfUserGlobalContact(a)))return;yield this.commonDbService.updateData({feature:"groupContactsUser",properties:{documentId:this.documentPaths?.documentId??"",organizationId:this.documentPaths?.organizationId??"",groupId:e,userId:It(a?.userId),skipFirestore:!0},data:JSON.parse(JSON.stringify(a))}),a?.email&&(yield this.commonDbService.deleteData({feature:"groupContactsUser",properties:{documentId:this.documentPaths?.documentId??"",organizationId:this.documentPaths?.organizationId??"",groupId:e,userId:It(a?.email),skipFirestore:!0}}))}}))}catch(i){this.loggingService.catch("Error in ContactService setLoggedInUserGroupContacts: ",i)}}removeGroupContacts(e){return Q(this,null,function*(){try{if(this.documentPaths?.groupContacts&&e)return this.commonDbService.deleteData({feature:"groupContacts",properties:{documentId:this.documentPaths?.documentId??"",organizationId:this.documentPaths?.organizationId??"",groupId:e,skipFirestore:!0}})}catch(t){this.loggingService.catch("Error in ContactService removeGroupContacts: ",t)}})}mergeUserContacts(){try{let e=[];this.userPersonalContacts&&e.push(...this.userPersonalContacts),this.userGroupContacts&&e.push(...this.userGroupContacts),this.userGlobalContacts&&e.push(...this.userGlobalContacts);let t={};e.forEach(i=>{i?.userId?(!i?.email||!t[i.email])&&(t[i.userId]=i):i?.email&&(!i?.userId||!t[i.userId])&&(t[i.email]=i)}),e=Object.values(t??{}),this.internalUserContacts$.next(e)}catch(e){this.loggingService.catch("Error in ContactService mergeUserContacts: ",e)}}getInternalUserContacts(){return this.internalUserContacts$.value}getInternalUserContacts$(){return this.internalUserContacts$.asObservable()}getUserContacts$(e){try{let{organizationId:t,documentId:i,veltFolderId:a}=e||{};return t&&i?pn([this.usersByOrganizationId$,this.usersByOrganizationIdAndFolderId$,this.usersByOrganizationIdAndDocumentId$,this.userById$,this.customUserContacts$,this.customUserContactsConfig$,this.getContactListScopeForOrganizationUsers$(),this.temporaryUserIds$]).pipe(ue(([l,s,d,g,u,b,E,A])=>{let M={},V=!1;b&&!b?.merge&&(V=!0);let q=xe=>E.some(ke=>xe.includes(ke)),ae=q([fo.ALL,fo.ORGANIZATION])?Object.keys(l?.[t]||{}):[],fe=a?q([fo.ALL,fo.FOLDER])?Object.keys(s?.[t]?.[a]||{}):[]:[],ie=q([fo.ALL,fo.DOCUMENT])?Object.keys(d?.[t]?.[i]||{}):[];if([...ae,...fe||[],...ie,...A].forEach(xe=>{let ke=g?.[xe];ke&&(M[xe]=ke)}),u){let{merge:xe,options:ke}=b||{},{organizationId:ye,documentId:Oe,folderId:Ne}=ke||{},Ue=Ne?Pr(Ne):void 0;(!ye||ye===t)&&(!Oe||Oe===i)&&(!Ue||Ue===a)&&(xe||(M={}),u.forEach(ze=>{ze?.userId&&(M[ze.userId]=ze)}))}return Object.values(M??{})})):this.userContacts$.asObservable().pipe(ue(l=>l))}catch(t){return this.loggingService.catch("Error in ContactService getUserContacts$ metadata: ",t),le([])}}getUserContactsBySnippylyId$(){return this.userSnippylyIdContacts$.asObservable()}getUserBySnippylyId(e){return this.userSnippylyIdContacts$.value?.[e]}getAtHereLabel(){return this.atHereLabel$.asObservable()}getAtHereDescription(){return this.atHereDescription$.asObservable()}getUserContactsFromDb$(){this.getUserContactSubscription||(this.getUserContactSubscription=this.authService.getUser$().pipe($e(e=>!!e),_e(e=>this.docService.getDocumentPaths$().pipe($e(t=>!!t),on(t=>{this.documentPaths=t}),ue(()=>e))),_e(e=>{if(this.userGroupContacts=[],this.userPersonalContacts=[],!e)return le();if(!this.documentPaths)return le();let t=[];return t.push(this.commonDbService.dbListener({feature:"allGlobalContacts",properties:{documentId:this.documentPaths?.documentId,organizationId:this.documentPaths?.organizationId,skipFirestore:!0}}).pipe(ue(i=>i?.data),on(i=>{i?(this.userGlobalContacts=Object.values(i??{}),this.userGlobalContacts?.find(a=>a.userId===this.user?.userId)?this.userGlobalContact$.next(!0):this.userGlobalContact$.next(!1)):(this.userGlobalContacts=[],this.userGlobalContact$.next(!1))}))),t.push(this.commonDbService.dbListener({feature:"groupContacts",properties:{documentId:this.documentPaths?.documentId,organizationId:this.documentPaths?.organizationId,skipFirestore:!0,groupId:e?.groupId}}).pipe(ue(i=>i?.data),on(i=>{i?(this.userGroupContacts=Object.values(i??{}),this.userGroupContacts?.find(a=>a?.userId===this.user?.userId)?this.userGroupContact$.next(!0):this.userGroupContact$.next(!1)):(this.userGroupContacts=[],this.userGroupContact$.next(!1))}))),t.push(this.commonDbService.dbListener({feature:"allLoginContacts",properties:{documentId:this.documentPaths?.documentId,organizationId:this.documentPaths?.organizationId,skipFirestore:!0,userId:It(e?.userId)}}).pipe(ue(i=>i?.data),on(i=>{i?this.userPersonalContacts=Object.values(i??{}):this.userPersonalContacts=[]}))),Ro(...t).pipe(zo(this.authService.getUser$().pipe($e(i=>!i))))})).subscribe(()=>{this.mergeUserContacts()},e=>{this.loggingService.catch("Error in ContactService getUserContacts$ subscription: ",e)}))}addUserContact(e){try{this.user?.organizationId||this.user?.groupId&&(e.visibility="group",this.setLoggedInUserGroupContacts(this.user?.groupId,[e]))}catch(t){this.loggingService.catch("Error in ContactService addUserContact: ",t)}}isUserGlobalContact$(){return this.userGlobalContact$.asObservable().pipe(xt(Jt))}isUserGlobalContact(){return this.userGlobalContact$.value}isUserGroupContact$(){return this.userGroupContact$.asObservable()}isUserGroupContact(){return this.userGroupContact$.value}getLoggedInUsers$(){return this.getLoggedInUsersSubscription||(this.getLoggedInUsersSubscription=this.authService.getUser$().pipe(_e(e=>e?this.documentPaths?e?.userId&&this.documentPaths?.logins?this.commonDbService.dbListener({feature:"allLogins",properties:{documentId:this.documentPaths?.documentId,organizationId:this.documentPaths?.organizationId,skipFirestore:!0}}).pipe(ue(t=>t?.data),on(t=>{t?this.users=Object.values(t??{}):this.users=[]})):(this.users=[],le()):le():le())).subscribe(()=>{this.users$.next(this.users)},e=>{this.loggingService.catch("Error in ContactService getLoggedInUsers$ subscription: ",e)})),this.users$.asObservable()}getUsersMap$(){return this.authService.getUser$().pipe(_e(e=>e?.organizationId?this.userById$.pipe(ue(t=>{let i={};return Object.values(t||{}).forEach(a=>{a?.userSnippylyId&&(i[a?.userSnippylyId]=a)}),i})):this.users$.pipe(ue(t=>{let i={};return t.forEach(a=>{i[a.userSnippylyId]=a}),i}))))}getUserByEmail$(e){return this.users$.pipe(ue(t=>t.find(i=>i.email===e)))}getUserByEmail(e){return this.users?.find(t=>t.email===e)}getContactByEmail(e){return this.getInternalUserContacts().find(t=>t.email===e)}getUserByUserId$(e){return this.users$.pipe(ue(t=>t.find(i=>i.userId===e)))}getUserGroupContacts(){return this.userGroupContacts}getTemporaryUsers(){try{let e=this.authService.getUser();this.docService.getOrganizationConfig$().pipe($e(t=>!!t),ue(t=>t?.organizationId)).subscribe(t=>Q(this,null,function*(){if(t&&e){let i=((yield this.commonDbService?.queryData({feature:"allPermissionsUsers",properties:{organizationId:t,useCollectionGroup:!1,isCollection:!0,firestoreQuery:[ft("expiresAt",">",new Date().getTime())]}}))??[]).filter(a=>a?.userId!==e?.userId);if(i?.length){let a=i.map(g=>g?.userId),l=ot(),s=xc.GET_TEMPORARY_USERS;this.coreActionsService.triggerAction(Qe.USER_RESOLVER,{event:K.Events.Resolver.USER_RESOLUTION_REQUEST_FORMED,timestamp:new Date().getTime(),uniqueId:l,moduleName:s,methodName:gi.GET_TEMPORARY_USERS,source:"internal",payload:{userIds:a}});let d=yield this.usersService.resolveUsers({userIds:a,uniqueId:l,moduleName:s});if(d){let g={};Object.entries(d).forEach(([b,E])=>{g[b]=E}),this.userById$.next(f(f({},this.userById$.value),g));let u=new Set([...this.temporaryUserIds$.value,...Object.keys(g)]);this.temporaryUserIds$.next(Array.from(u))}}}}))}catch(e){this.loggingService.catch("Error in ContactService getTemporaryUsers: ",e)}}searchUsers(e){return Q(this,null,function*(){try{if(!e||typeof e!="string"||!e.trim())return[];let t=e.trim();return this.searchUsersDebounced$||(this.searchUsersDebounced$=this.searchUsersSubject$.pipe(Qr(this.searchUsersDebounceTime),xt(),_e(i=>po(this.performSearch(i)).pipe(ue(a=>({searchText:i,results:a})),Jn(a=>(this.loggingService.catch("Error in ContactService performSearch: ",a),le({searchText:i,results:[]})))))),this.searchUsersDebounced$.subscribe({next:({searchText:i,results:a})=>{Array.from(this.pendingSearchPromises.keys()).forEach(d=>{if(d!==i){let g=this.pendingSearchPromises.get(d);g&&(g.forEach(({resolve:u})=>u([])),this.pendingSearchPromises.delete(d))}});let s=this.pendingSearchPromises.get(i);s&&(s.forEach(({resolve:d})=>d(a)),this.pendingSearchPromises.delete(i))},error:i=>{this.pendingSearchPromises.forEach(a=>{a.forEach(({reject:l})=>l(i))}),this.pendingSearchPromises.clear()}})),new Promise((i,a)=>{this.pendingSearchPromises.has(t)||this.pendingSearchPromises.set(t,[]),this.pendingSearchPromises.get(t).push({resolve:i,reject:a}),this.searchUsersSubject$.next(t)})}catch(t){return this.loggingService.catch("Error in ContactService searchUsers: ",t),[]}})}performSearch(e){return Q(this,null,function*(){try{let t=this.docService.getOrganizationConfig()?.organizationId;if(!t)return[];let i=this.documentPaths?.veltFolderId,a=this.docService.getDocumentIds().map(q=>q?.documentId),l=e.toLowerCase().trim(),s=l+"\uF8FF",d=[],g=a?.filter(q=>!!q)||[],u=g.length>0,b=!!i;if(u){let q=[];for(let fe=0;fe<g.length;fe+=20)q.push(g.slice(fe,fe+20));q.forEach(fe=>{let ie=[ft("documentIds","array-contains-any",fe),ft("viewerDocumentIds","array-contains-any",fe)],Ce=[ft("organizationIds","array-contains-any",[t]),ft("viewerOrganizationIds","array-contains-any",[t]),...ie];b&&Ce.push(ft("folderIds","array-contains-any",[i]),ft("viewerFolderIds","array-contains-any",[i])),d.push(this.commonDbService.queryData({feature:"allDocumentUsers",properties:{organizationId:t,isCollection:!0,useCollectionGroup:!1,useQuery:!0,firestoreQuery:[_r(N0(...Ce),ft("user.name_lowercase",">=",l),ft("user.name_lowercase","<",s)),lv(10)]}}).catch(()=>[])),d.push(this.commonDbService.queryData({feature:"allDocumentUsers",properties:{organizationId:t,isCollection:!0,useCollectionGroup:!1,useQuery:!0,firestoreQuery:[_r(N0(...Ce),ft("user.email_lowercase",">=",l),ft("user.email_lowercase","<",s)),lv(10)]}}).catch(()=>[]))})}let E=yield Promise.all(d),A=[];E.forEach(q=>{q&&Array.isArray(q)?q.forEach(ae=>{ae&&ae.user&&ae.user.userId&&A.push(ae)}):q&&typeof q=="object"&&Object.values(q).forEach(fe=>{fe&&fe.user&&fe.user.userId&&A.push(fe)})});let M=new Map;A.forEach(q=>{let ae=q.user?.userId;ae&&!M.has(ae)&&M.set(ae,q)});let V=Array.from(M.values());return this.setResolvedUsers(V,!0),V}catch(t){return this.loggingService.catch("Error in ContactService performSearch: ",t),[]}})}setResolvedUsers(e,t=!1){try{if(e?.length){let i=[],a=[],l=[],s=this.docService.getOrganizationConfig()?.organizationId,d=this.documentPaths?.veltFolderId,g=this.docService.getDocumentIds().map(E=>E?.documentId);e.forEach(E=>{this.userById$.value[E?.user?.userId]||(s&&E?.organizationIds?.includes(s)&&!i.find(A=>A?.user?.userId===E?.user?.userId)&&i.push(E),d&&E?.folderIds?.includes(d)&&!a.find(A=>A?.user?.userId===E?.user?.userId)&&a.push(E),g?.some(A=>E?.documentIds?.includes(A))&&!l.find(A=>A?.user?.userId===E?.user?.userId)&&l.push(E))}),i?.length&&this.setUserOrganizationContacts(i,s,t),a?.length&&this.setUserFolderContacts(a,t),l?.length&&this.setUserDocumentContacts(l,t);let b=[...i,...a,...l].filter((E,A,M)=>A===M.findIndex(V=>V.user.userId===E.user.userId));b?.length&&(this.setUserAccessFields(b),this.mergeOrganizationAndDocumentContacts())}}catch(i){this.loggingService.catch("Error in ContactService setResolvedUsers: ",i)}}getOrganizationContactsFromDb$(){try{this.getOrganizationContactsSubscription||(this.getOrganizationContactsSubscription=this.authService.getUser$().pipe(_e(e=>e?.organizationId?le(e).pipe(_e(t=>this.docService.getOrganizationConfig$().pipe($e(i=>!!i),ue(()=>t))),_e(t=>this.usersService.getResolveOrganizationUsers$().pipe($e(i=>i),ue(()=>t))),_e(t=>{let i=this.docService.getOrganizationConfig()?.organizationId;return this.setUserOrganizationContacts([],i),t?i?this.commonDbService.dbListener({feature:"allOrganizationUsers",properties:{organizationId:i,isCollection:!0,useQuery:!0,firestoreQuery:[_r(N0(ft("organizationIds","array-contains-any",[i]),ft("viewerOrganizationIds","array-contains-any",[i]))),vo("id"),...this.commentService?.getPaginatedContactList()?[lv(10)]:[]]}}).pipe(ue(a=>a?.data),_e(a=>this.commentService?.getPaginatedContactList()&&!Object.values(a??{}).find(l=>l?.user?.userId===this.authService.getUser()?.userId)?po(this.commonDbService.queryData({feature:"allOrganizationUsers",properties:{organizationId:i,isCollection:!0,useQuery:!0,firestoreQuery:[_r(N0(ft("organizationIds","array-contains-any",[i]),ft("viewerOrganizationIds","array-contains-any",[i])),ft("user.userId","==",this.authService.getUser()?.userId))]}})).pipe(ue(l=>{if(l&&l.length>0){let s=l[0],d=s?.user?.userId||s?.id;if(d&&a){let g=It(d);return k(f({},a),{[g]:s})}}return a})):le(a)),ue(a=>{if(a){typeof a=="object"&&(a?.undefined&&delete a.undefined,a?.null&&delete a.null);let l=Object.values(a??{});this.setUserAccessFields(l),this.setUserOrganizationContacts(l,i)}else this.setUserOrganizationContacts([],i)})):le():le()}),_e(()=>this.getContactListScopeForOrganizationUsers$())):(this.setUserOrganizationContacts([]),le()))).subscribe(()=>{this.mergeOrganizationAndDocumentContacts()},e=>{this.loggingService.catch("Error in ContactService getOrganizationContactsFromDb$ subscription: ",e)}))}catch{}}getFolderContactsFromDb$(){try{this.getFolderContactsSubscription||(this.getFolderContactsSubscription=this.authService.getUser$().pipe(_e(e=>e?le(e).pipe(_e(t=>this.docService.getOrganizationConfig$().pipe($e(i=>!!i),ue(()=>t))),_e(t=>this.usersService.getResolveFolderUsers$().pipe($e(i=>i),ue(()=>t))),_e(t=>{let i=this.docService.getOrganizationConfig()?.organizationId;if(this.setUserFolderContacts([]),!t)return le();if(!this.commonDbService.shouldUseFirestore())return le();if(!this.documentPaths?.veltFolderId)return le();let a=le([]);return a=this.commonDbService.dbListener({feature:"allFolderUsers",properties:{organizationId:i,folderId:this.documentPaths?.veltFolderId,isCollection:!0,useQuery:!0,firestoreQuery:[_r(N0(ft("folderIds","array-contains-any",[this.documentPaths?.veltFolderId]),ft("viewerFolderIds","array-contains-any",[this.documentPaths?.veltFolderId]))),vo("id"),...this.commentService?.getPaginatedContactList()?[lv(10)]:[]]}}).pipe(ue(l=>l?.data)),a.pipe(ue(l=>{if(l){typeof l=="object"&&(l?.undefined&&delete l.undefined,l?.null&&delete l.null);let s=Object.values(l??{});this.setUserAccessFields(s),this.setUserFolderContacts(s)}else this.setUserFolderContacts([])}))}),_e(()=>this.getContactListScopeForOrganizationUsers$())):(this.setUserFolderContacts([]),le()))).subscribe(()=>{this.mergeOrganizationAndDocumentContacts()},e=>{this.loggingService.catch("Error in ContactService getFolderContactsFromDb$ subscription: ",e)}))}catch{}}getDocumentContactsFromDb$(){try{this.getDocumentContactsSubscription||(this.getDocumentContactsSubscription=this.authService.getUser$().pipe(_e(e=>e?le(e).pipe(_e(t=>this.docService.getDocumentPaths$().pipe($e(i=>!!i),on(i=>{this.documentPaths=i}),ue(()=>t))),_e(t=>this.usersService.getResolveDocumentUsers$().pipe($e(i=>i),ue(()=>t))),_e(t=>(this.setUserDocumentContacts([]),t?this.documentPaths?this.docService.getDocumentIds$().pipe(_e(i=>{let a=i?.length>0?i.map(g=>g.documentId):[this.documentPaths?.documentId??""];if(a.some(g=>!g)||!this.documentPaths)return le();let l=le([]),s={isCollection:!0,useQuery:!0};this.commonDbService.shouldUseFirestore()||(s.documentId=a?.length?a[0]:void 0,s.organizationId=this.documentPaths?.organizationId);let d=[];for(let g=0;g<a.length;g+=U.LISTENER_BATCH_SIZE)d.push(a.slice(g,g+U.LISTENER_BATCH_SIZE));return l=pn(d.map(g=>this.commonDbService.dbListener({feature:"allDocumentUsers",properties:k(f({},s),{firestoreQuery:[_r(N0(ft("documentIds","array-contains-any",g),ft("viewerDocumentIds","array-contains-any",g))),vo("id"),...this.commentService?.getPaginatedContactList()?[lv(10)]:[]]})}).pipe(la()))).pipe(ue(g=>Ra(g)?.data)),l.pipe(ue(g=>{if(g){typeof g=="object"&&(g?.undefined&&delete g.undefined,g?.null&&delete g.null);let u=Object.values(g??{});this.setUserAccessFields(u),this.setUserDocumentContacts(u)}else this.setUserDocumentContacts([])}))})):le():le())),_e(()=>this.getContactListScopeForOrganizationUsers$())):(this.setUserDocumentContacts([]),le()))).subscribe(()=>{this.mergeOrganizationAndDocumentContacts()},e=>{this.loggingService.catch("Error in ContactService getDocumentContactsFromDb$ subscription: ",e)}))}catch{}}setUserOrganizationContacts(e,t,i=!0){try{let a=e.find(s=>s.user.userId===this.user?.userId);a&&this.setCurrentOrganizationUserIAM(a);let l=e.map(s=>s.user)?.filter(s=>!this.userOrganizationContacts$.value.find(d=>d.userId===s.userId));if(this.userOrganizationContacts$.next([...this.userOrganizationContacts$.value,...l]),i&&this.usersService.setUserByIds(l),t){let s={};s[t]={};let d={};e.forEach(u=>{s[t][u.user.userId]=u,d[u.user.userId]=u.user}),this.userById$.next(f(f({},this.userById$.value),d));let g=this.usersByOrganizationId$.value?.[t];g&&(s[t]=f(f({},g),s[t])),this.usersByOrganizationId$.next(k(f({},this.usersByOrganizationId$.value),{[t]:s[t]}))}else this.usersByOrganizationId$.next({})}catch(a){this.loggingService.catch("Error in ContactService setUserOrganizationContacts: ",a)}}getUserOrganizationContacts$(){return this.getContactListScopeForOrganizationUsers$().pipe(_e(()=>this.checkContactListScopeForOrganizationUsers([fo.ALL,fo.ORGANIZATION])?this.userOrganizationContacts$.asObservable():le([])))}getUserOrganizationContacts(){return this.checkContactListScopeForOrganizationUsers([fo.ALL,fo.ORGANIZATION])?this.userOrganizationContacts$.value:[]}setUserFolderContacts(e,t=!0){try{let i=e?.map(d=>d?.user)?.filter(d=>!this.userFolderContacts$.value.find(g=>g.userId===d.userId));this.userFolderContacts$.next([...this.userFolderContacts$.value,...i]),t&&this.usersService.setUserByIds(i);let a=this.usersByOrganizationIdAndFolderId$.value||{},l=f({},a),s={};e?.forEach(d=>{let{organizationId:g}=d?.metadata||{};g&&(l[g]||(l[g]={}),d.folderIds?.forEach(u=>{l[g][u]||(l[g][u]={}),l[g][u]=k(f({},l[g][u]),{[d.user.userId]:d}),s[d.user.userId]=d.user}))}),this.userById$.next(f(f({},this.userById$.value),s)),this.usersByOrganizationIdAndFolderId$.next(l)}catch(i){this.loggingService.catch("Error in ContactService updateUserFolderContacts: ",i)}}getUserFolderContacts$(){return this.getContactListScopeForOrganizationUsers$().pipe(_e(()=>this.checkContactListScopeForOrganizationUsers([fo.ALL,fo.FOLDER])?this.userFolderContacts$.asObservable():le([])))}getUserFolderContacts(){return this.checkContactListScopeForOrganizationUsers([fo.ALL,fo.FOLDER])?this.userFolderContacts$.value:[]}setUserDocumentContacts(e,t=!0){try{let i=e?.map(d=>d?.user)?.filter(d=>!this.userDocumentContacts$.value.find(g=>g.userId===d.userId));this.userDocumentContacts$.next([...this.userDocumentContacts$.value,...i]),t&&this.usersService.setUserByIds(i);let a=this.usersByOrganizationIdAndDocumentId$.value||{},l=f({},a),s={};e?.forEach(d=>{let{organizationId:g}=d?.metadata||{};g&&(l[g]||(l[g]={}),d.documentIds?.forEach(u=>{l[g][u]||(l[g][u]={}),l[g][u]=k(f({},l[g][u]),{[d.user.userId]:d}),s[d.user.userId]=d.user}))}),this.userById$.next(f(f({},this.userById$.value),s)),this.usersByOrganizationIdAndDocumentId$.next(l)}catch(i){this.loggingService.catch("Error in ContactService updateUserDocumentContacts: ",i)}}getUserDocumentContacts$(){return this.getContactListScopeForOrganizationUsers$().pipe(_e(()=>this.checkContactListScopeForOrganizationUsers([fo.ALL,fo.DOCUMENT])?this.userDocumentContacts$.asObservable():le([])))}getUserDocumentContacts(){return this.checkContactListScopeForOrganizationUsers([fo.ALL,fo.DOCUMENT])?this.userDocumentContacts$.value:[]}setCurrentOrganizationUserIAM(e){try{this.currentOrganizationUserIAM$.next(JSON.parse(JSON.stringify(e)))}catch(t){this.loggingService.catch("Error in ContactService setCurrentOrganizationUserIAM: ",t)}}getCurrentOrganizationUserIAM$(){return this.currentOrganizationUserIAM$.asObservable().pipe(xt(Jt))}getCurrentOrganizationUserIAM(){return this.currentOrganizationUserIAM$.value}mergeOrganizationAndDocumentContacts(){try{this.mergeContactsDebounceTimer&&clearTimeout(this.mergeContactsDebounceTimer),this.mergeContactsDebounceTimer=setTimeout(()=>{this.executeMergeContacts()},200)}catch(e){this.loggingService.catch("Error in ContactService mergeOrganizationAndDocumentContacts: ",e)}}executeMergeContacts(){try{let e=this.getContactListScopeForOrganizationUsers(),t=[];e.includes(fo.ALL)?t=[...this.getUserOrganizationContacts(),...this.getUserFolderContacts(),...this.getUserDocumentContacts()]:e.includes(fo.ORGANIZATION)?t=[...this.getUserOrganizationContacts()]:e.includes(fo.FOLDER)?t=[...this.getUserFolderContacts()]:e.includes(fo.DOCUMENT)&&(t=[...this.getUserDocumentContacts()]);let i=[...new Map(t.filter(a=>a?.userId).map(a=>[a.userId,a])).values()];this.internalUserContacts$.next(i)}catch(e){this.loggingService.catch("Error in ContactService mergeOrganizationAndDocumentContacts: ",e)}}getOrganizationGroupsFromDb$(){try{this.getOrganizationGroupsSubscription||(this.getOrganizationGroupsSubscription=this.authService.getUser$().pipe(_e(e=>e?.organizationId?le(e).pipe(_e(t=>this.docService.getOrganizationConfig$().pipe($e(i=>!!i),ue(()=>t))),_e(t=>{if(this.setUserOrganizationGroups([]),!t)return le();let i=this.docService.getOrganizationConfig()?.organizationId;return i?this.commonDbService.dbListener({feature:"allOrganizationGroups",properties:{organizationId:i,isCollection:!0}}).pipe(ue(a=>a?.data),ue(a=>{a?(typeof a=="object"&&(a?.undefined&&delete a.undefined,a?.null&&delete a.null),this.setUserOrganizationGroups(Object.values(a??{}))):this.setUserOrganizationGroups([])})):le()})):(this.setUserOrganizationGroups([]),le()))).subscribe(()=>{},e=>{this.loggingService.catch("Error in ContactService getOrganizationGroupsFromDb$ subscription: ",e)}))}catch{}}setUserOrganizationGroups(e){try{this.userOrganizationGroups$.next(e)}catch(t){this.loggingService.catch("Error in ContactService setUserOrganizationGroups: ",t)}}onContactSelected(e){try{if(e?.userId){let t=!!this.getUserDocumentContacts().find(a=>a.userId===e.userId),i=!!this.getUserOrganizationContacts().find(a=>a.userId===e.userId);switch(this.documentAccessType){case zr.RESTRICTED:if(!t){let a={contact:e,isOrganizationContact:i,isDocumentContact:t,documentAccessType:this.documentAccessType};this.onContactSelectedSubject$.next(a)}break}}else{let t={contact:e,isOrganizationContact:!1,isDocumentContact:!1,documentAccessType:this.documentAccessType};this.onContactSelectedSubject$.next(t)}}catch(t){this.loggingService.catch("Error in ContactService onContactSelected: ",t)}}onContactSelected$(){return this.onContactSelectedSubject$.asObservable()}getOrganizationGroups$(){return this.getContactListScopeForOrganizationUsers$().pipe(_e(()=>this.checkContactListScopeForOrganizationUsers([fo.ALL,fo.ORGANIZATION_USER_GROUP])?this.userOrganizationGroups$.asObservable():le([])))}enableAtHere(){try{if(this.analyticsService.setFeatureConfig({feature:je.COMMENT,config:{atHereEnabled:!0}}),this.atHereEnabled$.value===!0)return;this.atHereEnabled$.next(!0)}catch(e){this.loggingService.catch("Error in ContactService enableAtHere: ",e)}}setAtHereLabel(e){try{this.analyticsService.setFeatureConfig({feature:je.COMMENT,config:{atHereLabel:e}}),e&&this.atHereLabel$.next(e)}catch(t){this.loggingService.catch("Error in ContactService setAtHereLabel: ",t)}}setAtHereDescription(e){try{this.analyticsService.setFeatureConfig({feature:je.COMMENT,config:{atHereDescription:e}}),e&&this.atHereDescription$.next(e)}catch(t){this.loggingService.catch("Error in ContactService setAtHereDescription: ",t)}}disableAtHere(){try{if(this.analyticsService.setFeatureConfig({feature:je.COMMENT,config:{atHereEnabled:!1}}),this.atHereEnabled$.value===!1)return;this.atHereEnabled$.next(!1)}catch(e){this.loggingService.catch("Error in ContactService disableAtHere: ",e)}}getAtHereEnabled$(){return this.getContactListScopeForOrganizationUsers$().pipe(_e(()=>this.checkContactListScopeForOrganizationUsers([fo.ALL,fo.DOCUMENT])?this.atHereEnabled$.asObservable():le(!1)))}getAtHereEnabled(){return this.checkContactListScopeForOrganizationUsers([fo.ALL,fo.DOCUMENT])?this.atHereEnabled$.value:!1}updateContactListScopeForOrganizationUsers(e){try{this.contactListScopeForOrganizationUsers$.next(e)}catch(t){this.loggingService.catch("Error in ContactService updateContactListScopeForOrganizationUsers: ",t)}}getContactListScopeForOrganizationUsers$(){return this.contactListScopeForOrganizationUsers$.asObservable()}getContactListScopeForOrganizationUsers(){return this.contactListScopeForOrganizationUsers$.value}checkContactListScopeForOrganizationUsers(e){return this.getContactListScopeForOrganizationUsers().some(t=>e.includes(t))}updateContactList(e,t){return Q(this,null,function*(){try{this.analyticsService.trackEvent(K.Events.Contact.UPDATE_CONTACT_LIST_TRIGGERED,{contactsCount:e?.length,config:t}),this.usersService.setUserByIds(e),this.customUserContacts$.next(e),this.customUserContactsConfig$.next(t)}catch(i){this.loggingService.catch("Error in CommentService updateContactList: ",i)}})}convert(e){try{if(e?.options){let{documentId:t,organizationId:i}=this.docService.getServerId(e?.options);e.options=k(f({},e?.options),{documentId:t,organizationId:i})}return this}catch(t){return this.loggingService.catch("Error in ContactService convert: ",t),this}}getContactList$(){try{return this.authService.getUser$().pipe(_e(e=>e?pn([this.userOrganizationContacts$.asObservable(),this.userFolderContacts$.asObservable(),this.userDocumentContacts$.asObservable(),this.userOrganizationGroups$.asObservable(),this.customUserContacts$.asObservable()]).pipe(ue(([t,i,a,l,s])=>{let d={};d.organizationUsers=t?.map(u=>this.convertToClientUser(u)),d.folderUsers=i?.map(u=>this.convertToClientUser(u)),d.documentUsers=a?.map(u=>this.convertToClientUser(u)),d.updatedContactList=s?.map(u=>this.convertToClientUser(u));let g=[];return l?.forEach(u=>{let b=this.convertToClientUserGroup(u,d.organizationUsers||[]);b&&g.push(b)}),d.userGroups=g,d}),xt(Jt)):le(null)),Jn(e=>(this.loggingService.catch("Error in ContactService getContactList$: ",e),le(null))))}catch(e){return this.loggingService.catch("Error in ContactService getContactList$: ",e),le(null)}}convertToClientUserGroup(e,t){try{let i={groupId:e?.metadata?.clientGroupId,groupName:e?.metadata?.groupName,users:[]},a={};return t?.forEach(l=>{if(l?.userId){let s=It(l.userId);a[s]=l}}),Object.keys(e?.users??{}).forEach(l=>{a[l]&&i.users?.push(a[l])}),i}catch(i){return this.loggingService.catch("Error in ContactService convertToClientUserGroup: ",i),null}}convertToClientUser(e){try{return e&&(e=JSON.parse(JSON.stringify(e)),e?.clientGroupId&&(e.groupId=e.clientGroupId,delete e.clientGroupId),e?.clientOrganizationId&&(e.organizationId=e.clientOrganizationId,delete e.clientOrganizationId),e?.userSnippylyId&&delete e.userSnippylyId),e}catch(t){return this.loggingService.catch("Error in ContactService convertToClientUser: ",t),e}}getCustomUserContacts(){return this.customUserContacts$.value}getCustomUserContacts$(){return this.customUserContacts$.asObservable()}getCustomUserContactsConfig(){return this.customUserContactsConfig$.value}getCustomUserContactsConfig$(){return this.customUserContactsConfig$.asObservable()}};o.\u0275fac=function(t){return new(t||o)(X(lt),X(We),X(Ft),X(tr),X($n),X(ct),X(x),X(Tn),X(An))},o.\u0275prov=Me({token:o,factory:o.\u0275fac,providedIn:"root"});let n=o;return n})();var Ln=(()=>{let o=class o{constructor(e,t,i,a,l,s,d,g){this.analyticsService=e,this.authService=t,this.contactService=i,this.databaseService=a,this.docService=l,this.configService=s,this.loggingService=d,this.commonDbService=g,this.documentIAM$=new Se(null),this.workspaceIAM$=new Se(null),this.roles$=new Se([]),this.getDocumentIamSubscription=null,this.getOrganizationIamSubscription=null,this.getWorkspaceIamSubscription=null;try{this.authService.setIamService(this),this.databaseService.getDb().pipe($e(u=>!!u),ut(1)).subscribe(u=>{u&&(this.getUser(),this.getDocumentPaths())},u=>{this.loggingService.catch("Error in CommentService getDb subscription: ",u)}),this.getRole$().pipe(ut(1)).subscribe(u=>{this.authService?.getUser()&&!u&&this.analyticsService.trackEvent(K.Events.Iam.USER_ACCESS_DENIED)}),this.documentIAM$.subscribe(u=>{u?.accessType&&this.contactService.setDocumentAccessType(u.accessType)})}catch(u){this.loggingService.catch("Error in IamService constructor: ",u)}}clearCache(){this.loggingService.log("%c[WB] Calling FUNCTION: clearCache in IamService","color: green;");try{this.documentIAM$.next(null),this.workspaceIAM$.next(null),this.roles$.next([]),this.documentPaths=null}catch(e){this.loggingService.catch("Error in IamService clearCache: ",e)}}getUser(){try{this.authService.getUser$().pipe($e(e=>!!e)).subscribe(e=>{this.user=e,this.user?this.getDocumentIam():(this.getDocumentIamSubscription?.unsubscribe(),this.getOrganizationIamSubscription?.unsubscribe(),this.getWorkspaceIamSubscription?.unsubscribe())},e=>{this.loggingService.catch("Error in IamService getUser$ subscription: ",e)})}catch(e){this.loggingService.catch("Error in IamService getUser: ",e)}}getDocumentPaths(){try{this.docService.getDocumentPaths$().pipe($e(e=>!!e)).subscribe(e=>{this.documentPaths=e,this.getDocumentIam(),this.getWorkspaceIam()},e=>{this.loggingService.catch("Error in IamService getDocumentPaths$ subscription: ",e)})}catch(e){this.loggingService.catch("Error in IamService getDocumentPaths: ",e)}}getDocumentIam(){try{this.getDocumentIamSubscription&&(this.getDocumentIamSubscription.unsubscribe(),this.getDocumentIamSubscription=null),this.user?this.getDocumentIamSubscription=this.docService.getDocumentIam$().subscribe(e=>{let t=e||new uL;this.documentIAM$.next(t)},e=>{this.loggingService.catch("Error in IamService getDocumentIam$ subscription: ",e)}):this.documentIAM$.next(null)}catch(e){this.loggingService.catch("Error in IamService getDocumentIam: ",e)}}getWorkspaceIam(){try{this.getWorkspaceIamSubscription||(this.getWorkspaceIamSubscription=this.commonDbService.dbListener({feature:"workspaceIam",properties:{skipFirestore:!0}}).pipe(Jn(e=>le(null))).subscribe(e=>{this.workspaceIAM$.next(e?.data),this.roles$.next(e?.data?.roles||[])}))}catch(e){this.loggingService.catch("Error in IamService getWorkspaceIam: ",e)}}isUserAllowed$(){return this.getRole$().pipe(ue(e=>!!e),xt())}getDocumentIAM$(){return this.documentIAM$.asObservable()}getRoles$(){return this.roles$.asObservable().pipe(ue(e=>e?.length?e:U.WorkspaceRoles))}getFeaturesAccessLevel$(){return this.documentIAM$.asObservable().pipe(ue(e=>e?.features),_e(e=>this.getRole$().pipe(ue(t=>(t===Lo.ADMIN&&(e=e&&JSON.parse(JSON.stringify(e||{})),e?.all?.disabled&&(e.all.disabled=!1)),e)))))}hasRole(e){try{return e===this.getRole()}catch(t){return this.loggingService.catch("Error in IamService hasRole: ",t),!1}}hasRoleAny(e=[]){try{return e?.includes(this.getRole()||"")}catch(t){return this.loggingService.catch("Error in IamService hasRoleAny: ",t),!1}}hasRole$(e){try{return this.authService.getUser$().pipe(_e(()=>this.documentIAM$.pipe($e(t=>!!t),_e(()=>this.workspaceIAM$.pipe(ue(()=>e===this.getRole()))))))}catch(t){return this.loggingService.catch("Error in IamService hasRole$: ",t),le(!1)}}getRole$(){try{return this.authService.getUser$().pipe(_e(()=>this.configService.getSF$()),_e(()=>this.configService.getSF()?this.contactService.isUserGlobalContact$():le(null)),_e(()=>this.configService.getSF()?this.documentIAM$.pipe($e(e=>!!e),xt(Jt)):le(null)),_e(()=>this.workspaceIAM$.pipe(xt(Jt))),ue(()=>this.getRole()))}catch(e){return this.loggingService.catch("Error in IamService getRole$: ",e),le(null)}}getRole(){try{let e=this.configService.getSF();if(e&&this.contactService.isUserGlobalContact())return Lo.ADMIN;if(!e)return this.user?.isAdmin?Lo.ADMIN:Lo.COMMENTER;let t=null,i;if(this.user)switch((this.documentIAM$.value?this.documentIAM$.value?.features?.all?.restricted:!1)?zr.RESTRICTED:this.documentIAM$.value?this.documentIAM$.value?.documentAccessType||zr.PUBLIC:null){case zr.PUBLIC:i=this.getUserFromDocumentIAM(this.user?.email,this.user?.userId),i||(i=this.getUserFromWorkspaceIAM(this.user?.email,this.user?.userId)),t=i?.role?.name||Lo.COMMENTER;break;case zr.RESTRICTED:i=this.getUserFromDocumentIAM(this.user?.email,this.user?.userId),i||(i=this.getUserFromWorkspaceIAM(this.user?.email,this.user?.userId)),t=i?.role?.name||null;break;default:break}return t}catch(e){this.loggingService.catch("Error in IamService getRole: ",e)}return null}isUserAdmin$(){return this.getRole$().pipe(ue(e=>e===Lo.ADMIN),xt())}isUserAdmin(){try{return this.getRole()===Lo.ADMIN}catch(e){return this.loggingService.catch("Error in IamService isUserAdmin: ",e),!1}}getUserFromDocumentIAM(e,t){try{if(e||t){let i;return e&&(i=this.documentIAM$.value?.users?.[It(e)]),!i&&t&&(i=this.documentIAM$.value?.users?.[It(t)]),i}else return}catch(i){this.loggingService.catch("Error in IamService getUserFromDocumentIAM: ",i)}}getUserFromWorkspaceIAM(e,t){try{if(e||t){let i;return e&&(i=this.workspaceIAM$.value?.users?.[It(e)]),!i&&t&&(i=this.workspaceIAM$.value?.users?.[It(t)]),i}else return}catch(i){this.loggingService.catch("Error in IamService getUserFromWorkspaceIAM: ",i)}}};o.\u0275fac=function(t){return new(t||o)(X(lt),X(We),X(dn),X($n),X(ct),X(Ft),X(x),X(Tn))},o.\u0275prov=Me({token:o,factory:o.\u0275fac,providedIn:"root"});let n=o;return n})();var UL="public",il=(()=>{let o=class o{constructor(e,t,i,a,l,s,d,g,u,b){this.authService=e,this.docService=t,this.loggingService=i,this.commonDbService=a,this.usersService=l,this.commentUtilsService=s,this.coreActionsService=d,this.functions=g,this.configService=u,this.contactService=b,this.currentUserPermissions$=new Se(null),this.permissionsCache$=new Se(null),this.permissionProvider$=new Se(null),this.REVOKE_DELAY_MS=3e3,this.pendingRevokeRequests=new Map,this.pendingRevokeTimeoutId=null,this.pendingRevokeUniqueId="",this.pendingRevokeUserId="";try{this.docService.setUserPermissionService(this),this.authService.setUserPermissionService(this),this.commentUtilsService.setUserPermissionService(this),this.contactService.setUserPermissionService(this)}catch(E){this.loggingService.catch("Error in UserPermissionService constructor:",E)}}ngOnDestroy(){try{this.pendingRevokeTimeoutId&&(clearTimeout(this.pendingRevokeTimeoutId),this.pendingRevokeTimeoutId=null)}catch(e){this.loggingService.catch("Error in UserPermissionService ngOnDestroy:",e)}}collectRevokeRequest(e,t,i,a,l,s){try{return e.find(g=>g.resourceId===i&&g.type===a&&g.organizationId===l&&g.userId===s)?(t.push({userId:s,resourceId:i,organizationId:l,type:a,hasAccess:!1}),e.filter(g=>!(g.resourceId===i&&g.type===a&&g.organizationId===l&&g.userId===s))):e}catch(d){return this.loggingService.catch("Error in UsersPermissionService collectRevokeRequest:",d),e}}hasUserContextAccess({userId:e,accessFields:t}){try{if(!this.getIsContextEnabled()||t.includes(U.DEFAULT_VELT_CONTEXT))return!0;let i=this.contactService.getUserAccessFieldsByUserId(e);return i?t.every(a=>i.includes(a)):!0}catch(i){return this.loggingService.catch("Error in UserPermissionService hasUserContextAccess:",i),!1}}organizationDetails(e){return Q(this,null,function*(){try{let t=yield this.commonDbService?.getData({feature:"organizationMetadata",properties:{organizationId:e}});return t&&t?.errorCode?{errorCode:_o.PERMISSION_DENIED,error:!0}:t&&!t?.metadata?{errorCode:_o.DOES_NOT_EXIST,error:!0}:{error:!1}}catch(t){return this.loggingService.catch("Error in UserPermissionService organizationDetails:",t),{errorCode:_o.SOMETHING_WENT_WRONG,error:!0}}})}documentDetails(i){return Q(this,arguments,function*({documentId:e,organizationId:t}){try{let a=yield this.commonDbService?.getData({feature:"documentMetadata",properties:{documentId:e,organizationId:t}});if(a&&a?.errorCode)return{errorCode:_o.PERMISSION_DENIED,error:!0};if(a&&!a?.metadata)return{errorCode:_o.DOES_NOT_EXIST,error:!0};let l=this.docService.getDocumentMetadata(e)??{};this.docService.setDocumentMetadata(e,f(f({},l),a?.metadata??{}));let s,d=a?.metadata?.veltFolderId;if(d)try{s=(yield this.commonDbService?.getData({feature:"folderMetadata",properties:{folderId:d,organizationId:t}}))?.folderIamConfig?.accessType}catch(g){this.loggingService.catch("Error fetching folder accessType for document:",g)}return s||(s=a?.docIamConfig?.accessType),{error:!1,accessType:s}}catch(a){return this.loggingService.catch("Error in UserPermissionService documentDetails:",a),{errorCode:_o.SOMETHING_WENT_WRONG,error:!0}}})}folderDetails(i){return Q(this,arguments,function*({folderId:e,organizationId:t}){try{let a=yield this.commonDbService?.getData({feature:"folderMetadata",properties:{folderId:e,organizationId:t}});return a&&a?.errorCode?{errorCode:_o.PERMISSION_DENIED,error:!0}:a&&!a?.metadata?{errorCode:_o.DOES_NOT_EXIST,error:!0}:{error:!1,accessType:a?.folderIamConfig?.accessType}}catch(a){return this.loggingService.catch("Error in UserPermissionService folderDetails:",a),{errorCode:_o.SOMETHING_WENT_WRONG,error:!0}}})}getUserPermissions(e){return Q(this,null,function*(){try{if(!this.authService.getUser())return this.loggingService.catch("User not set. [source: getUserPermissions]",void 0,void 0,!0),{};let t=this.extractResourceIds(e);if(!t.clientOrganizationId||!t.organizationId)return this.loggingService.catch("Client organization id or organization id not set during getUserPermissions",void 0,void 0,!0),{};let i=yield this.validateResources(t),[a,l]=yield this.fetchUserPermissionsFromDB(t),s=this.buildPermissionsResponse(t,i,a,l);return!e&&Object.keys(s).length>0&&this.setCurrentUserPermissions(s),s}catch(t){return this.loggingService.catch("Error in UserPermissionService getUserPermissions:",t),{}}})}extractResourceIds(e){let t=this.docService.getDocumentPaths(),i=this.docService.getDocumentIds();return{folderIds:e?.folderIds?.length?e.folderIds:t?.folderId?[t.folderId]:[],documentIds:e?.documentIds?.length?e.documentIds:i.map(a=>a.clientDocumentId),clientOrganizationId:e?.organizationId??t?.clientOrganizationId,organizationId:e?.organizationId??t?.clientOrganizationId?Pa(e?.organizationId??t?.clientOrganizationId??""):void 0}}validateResources(e){return Q(this,null,function*(){let{folderIds:t,documentIds:i,organizationId:a,clientOrganizationId:l}=e,s=[],d=[];a&&(s.push(this.organizationDetails(a)),d.push({id:l??"",type:"organization"})),t.forEach(b=>{s.push(this.folderDetails({folderId:Pr(b),organizationId:a??""})),d.push({id:b,type:"folder"})}),i.forEach(b=>{s.push(this.documentDetails({documentId:mi(b),organizationId:a??""})),d.push({id:b,type:"document"})});let[g,u]=yield Promise.all([Promise.allSettled(s),this.getDefaultDocumentAccessType()]);return k(f({},this.processValidationResults(g,d)),{defaultDocumentAccessType:u})})}getDefaultDocumentAccessType(){return Q(this,null,function*(){try{return(yield this.commonDbService?.getData({feature:"apiKeyMetadata",properties:{}}))?.defaultDocumentAccessType}catch(e){this.loggingService.catch("Error fetching defaultDocumentAccessType:",e);return}})}processValidationResults(e,t){let i=[],a=[],l,s={},d={};for(let g=0;g<e.length;g++){let u=e[g],b=t[g];if(u.status==="rejected"||u.status==="fulfilled"&&u.value.error){let A=u.status==="fulfilled"?u.value.errorCode??_o.SOMETHING_WENT_WRONG:_o.SOMETHING_WENT_WRONG,M={id:b.id,errorCode:A};switch(b.type){case"organization":if(l=M,A===_o.DOES_NOT_EXIST)throw new Error(`Organization with id '${b.id}' does not exist`);break;case"folder":i.push(M);break;case"document":a.push(M);break}}else if(u.status==="fulfilled")switch(b.type){case"folder":u.value.accessType&&(s[b.id]=u.value.accessType);break;case"document":u.value.accessType&&(d[b.id]=u.value.accessType);break}}return{failedFolderIds:i,failedDocumentIds:a,failedOrganizationId:l,folderAccessTypes:s,documentAccessTypes:d}}fetchUserPermissionsFromDB(e){return Q(this,null,function*(){let{folderIds:t,documentIds:i,organizationId:a}=e,l=[this.authService.getUser()?.userId??""],s=[...t.map(u=>Pr(u)),...i.map(u=>mi(u)),a??""],[d,g]=yield Promise.allSettled([this.usersService.getUsersFromDBWithBatching({userIds:l,organizationId:a}),this.usersService.getTemporaryUsersFromDBWithBatching({userIds:l,organizationId:a,resourceIds:s})]);return[d.status==="fulfilled"?d.value:[],g.status==="fulfilled"?g.value:[]]})}buildPermissionsResponse(e,t,i,a){let{folderIds:l,documentIds:s,clientOrganizationId:d,organizationId:g}=e,{failedFolderIds:u,failedDocumentIds:b,failedOrganizationId:E}=t,A={};return this.processRegularUserPermissions(A,i,l,s,d??"",g??"",u,b,E,t.folderAccessTypes,t.documentAccessTypes,t.defaultDocumentAccessType),this.processTemporaryUserPermissions(A,a),this.processContextPermissions(A),A}processContextPermissions(e){try{let t=this.authService.getUser()?.userId;if(t){let i=this.contactService.getUserAccessFieldsByUserId(t);i?.length&&(e[t]||(e[t]={}),e[t].context={accessFields:i})}}catch(t){this.loggingService.catch("Error in UserPermissionService processContextPermissions:",t);return}}processRegularUserPermissions(e,t,i,a,l,s,d,g,u,b,E,A){for(let M of t)for(let V of M)V?.user?.userId&&(e[V.user.userId]=k(f({},i.length&&{folders:this.buildFolderPermissions(i,V,d,b,A)}),{documents:this.buildDocumentPermissions(a,V,g,E,A),organization:{[l]:this.buildOrganizationPermission(s,V,u)}}))}getErrorMessage(e,t){try{switch(this.loggingService.log(`Error in UserPermissionService getErrorMessage: ${e} ${t}`),e){case _o.DOES_NOT_EXIST:return`${t} does not exist`;case _o.PERMISSION_DENIED:return`User does not have access to ${t}`;case _o.SOMETHING_WENT_WRONG:return"Something went wrong";default:return"Something went wrong"}}catch(i){return this.loggingService.catch("Error in UserPermissionService getErrorMessage:",i),"Something went wrong"}}buildFolderPermissions(e,t,i,a,l){return e.reduce((s,d)=>{let g=i.find(u=>u.id===d);return g?s[d]=f({error:this.getErrorMessage(g.errorCode,"folder"),errorCode:g.errorCode},g.errorCode===_o.PERMISSION_DENIED&&{accessType:a[d]??l??UL}):s[d]={accessRole:t.viewerFolderIds?.includes(Pr(d))?$s.VIEWER:$s.EDITOR,accessType:a[d]??l??UL},s},{})}buildDocumentPermissions(e,t,i,a,l){return e.reduce((s,d)=>{let g=i.find(u=>u.id===d);return g?s[d]=f({error:this.getErrorMessage(g.errorCode,"document"),errorCode:g.errorCode},g.errorCode===_o.PERMISSION_DENIED&&{accessType:a[d]??l??UL}):s[d]={accessRole:t.viewerDocumentIds?.includes(mi(d))?$s.VIEWER:$s.EDITOR,accessType:a[d]??l??UL},s},{})}buildOrganizationPermission(e,t,i){return i?{error:this.getErrorMessage(i.errorCode,"organization"),errorCode:i.errorCode}:{accessRole:t.viewerOrganizationIds?.includes(e)?$s.VIEWER:$s.EDITOR}}processTemporaryUserPermissions(e,t){for(let i of t)if(i?.userId)switch(this.ensureUserPermissionStructure(e,i.userId),i.type){case"folder":this.addTemporaryFolderPermission(e,i);break;case"document":this.addTemporaryDocumentPermission(e,i);break;case"organization":this.addTemporaryOrganizationPermission(e,i);break}}ensureUserPermissionStructure(e,t){e[t]||(e[t]={})}addTemporaryFolderPermission(e,t){let{userId:i,resourceId:a,role:l,expiresAt:s}=t;e[i].folders||(e[i].folders={}),e[i].folders[a]||(e[i].folders[a]={accessRole:l??$s.EDITOR,expiresAt:s})}addTemporaryDocumentPermission(e,t){let{userId:i,resourceId:a,role:l,expiresAt:s}=t;e[i].documents||(e[i].documents={}),e[i].documents[a]={accessRole:l??$s.EDITOR,expiresAt:s}}addTemporaryOrganizationPermission(e,t){let{userId:i,resourceId:a,role:l,expiresAt:s}=t;e[i].organization||(e[i].organization={}),e[i].organization[a]={accessRole:l??$s.EDITOR,expiresAt:s}}hasEditAccess({organizationId:e,folderId:t,documentId:i}){try{let a=!0,l=this.getCurrentUserPermissionsWithServerIds(),s=this.authService.getUser()?.userId??"";return l&&(e&&typeof e=="string"&&l?.[s]?.organization?.[e]&&(l?.[s]?.organization?.[e]?.accessRole===$s.VIEWER||l?.[s]?.organization?.[e]?.errorCode===_o.PERMISSION_DENIED)&&(a=!1),t&&typeof t=="string"&&l?.[s]?.folders?.[t]&&(l?.[s]?.folders?.[t]?.accessRole===$s.VIEWER||l?.[s]?.folders?.[t]?.errorCode===_o.PERMISSION_DENIED)&&(a=!1),i&&typeof i=="string"&&l?.[s]?.documents?.[i]&&(l?.[s]?.documents?.[i]?.accessRole===$s.VIEWER||l?.[s]?.documents?.[i]?.errorCode===_o.PERMISSION_DENIED)&&(a=!1)),a}catch{return!0}}getCurrentUserPermissions$(){return this.currentUserPermissions$.asObservable().pipe(xt(Jt))}getCurrentUserPermissions(){return this.currentUserPermissions$.value}refactorPermissionsWithServerIds(e){try{let t=JSON.parse(JSON.stringify(e??{})),i=this.authService.getUser()?.userId??"";if(t?.[i]){let a=this.docService.getDocumentPaths()?.clientOrganizationId??"";if(t?.[i]?.organization?.[a]){let l=Pa(a);t[i].organization&&(t[i].organization[l]=t[i].organization[a],delete t[i].organization[a])}t?.[i]?.folders&&(t[i].folders=Object.fromEntries(Object.entries(t?.[i]?.folders??{}).map(([l,s])=>[Pr(l),s]))),t?.[i]?.documents&&(t[i].documents=Object.fromEntries(Object.entries(t?.[i]?.documents??{}).map(([l,s])=>[mi(l),s])))}return t}catch(t){return this.loggingService.catch("Error in UsersPermissionService refactorPermissionsWithServerIds:",t),e}}getCurrentUserPermissionsWithServerIds$(){return this.currentUserPermissions$.asObservable().pipe(ue(e=>this.refactorPermissionsWithServerIds(e)),xt(Jt))}getCurrentUserPermissionsWithServerIds(){return this.refactorPermissionsWithServerIds(this.currentUserPermissions$.value)}setCurrentUserPermissions(e){try{this.loggingService.log("%c[WB] Calling UsersService FUNCTION: setCurrentUserPermissions","color: green;");let t=null;e&&(t=JSON.parse(JSON.stringify(e))),this.currentUserPermissions$.next(t)}catch(t){this.loggingService.catch("Error in UsersPermissionService setCurrentUserPermissions:",t)}}getIsContextEnabled(){return this.loggingService.log("%c[WB] Calling FUNCTION: getIsContextEnabled","color: green;"),this.permissionProvider$.value?.isContextEnabled??!1}setPermissionProvider(e){try{this.loggingService.log("%c[WB] Calling UsersService FUNCTION: setPermissionProvider","color: green;"),this.permissionProvider$.next(e)}catch(t){this.loggingService.catch("Error in UsersPermissionService setPermissionProvider:",t)}}get isRevokeAccessOnDocumentUnsetEnabled(){return this.permissionProvider$.value?.revokeAccessOn?.some(e=>e.type===tS.DOCUMENT_UNSET)??!1}get isRevokeAccessOnUserLogoutEnabled(){return this.permissionProvider$.value?.revokeAccessOn?.some(e=>e.type===tS.USER_LOGOUT)??!1}get isRevokeOrganizationAccessOnUserLogoutEnabled(){return this.permissionProvider$.value?.revokeAccessOn?.some(e=>e.type===tS.USER_LOGOUT&&e.revokeOrganizationAccess)??!1}get isRevokeOrganizationAccessOnDocumentUnsetEnabled(){return this.permissionProvider$.value?.revokeAccessOn?.some(e=>e.type===tS.DOCUMENT_UNSET&&e.revokeOrganizationAccess)??!1}getPermissionProviderRetryConfig(){return this.permissionProvider$.value?.retryConfig??{retryCount:0,retryDelay:0}}revokeAccessOnUserLogout(){return Q(this,null,function*(){let e=ot();try{if(this.isRevokeAccessOnUserLogoutEnabled){let t=[],i=this.authService.getUser()?.userId??"";if((this.getPermissionsCache()??[]).forEach(l=>{l.userId===i&&l.hasAccess&&(l.type===oa.ORGANIZATION?this.isRevokeOrganizationAccessOnUserLogoutEnabled&&t.push(k(f({},l),{hasAccess:!1})):t.push(k(f({},l),{hasAccess:!1})))}),t.length>0){this.coreActionsService.triggerAction(Qe.PERMISSION_PROVIDER,{event:K.Events.PermissionProvider.REVOKE_ACCESS_ON_USER_LOGOUT_FORMED,timestamp:new Date().getTime(),uniqueId:e,methodName:ro.REVOKE_ACCESS_ON_USER_LOGOUT,source:"internal",payload:{requests:t}}),this.setPermissionsCache([]),this.coreActionsService.triggerAction(Qe.PERMISSION_PROVIDER,{event:K.Events.PermissionProvider.REVOKE_ACCESS_ON_USER_LOGOUT_TRIGGERED,timestamp:new Date().getTime(),uniqueId:e,methodName:ro.REVOKE_ACCESS_ON_USER_LOGOUT,source:"internal",payload:{requests:t}});let l=yield this.revokeAccess({requests:t,userId:this.authService.getUser()?.userId??""});l.success?this.coreActionsService.triggerAction(Qe.PERMISSION_PROVIDER,{event:K.Events.PermissionProvider.REVOKE_ACCESS_ON_USER_LOGOUT_RESULT,timestamp:new Date().getTime(),uniqueId:e,methodName:ro.REVOKE_ACCESS_ON_USER_LOGOUT,source:"internal",payload:{result:{data:l,success:!0,statusCode:200}}}):this.coreActionsService.triggerAction(Qe.PERMISSION_PROVIDER,{event:K.Events.PermissionProvider.REVOKE_ACCESS_ON_USER_LOGOUT_ERROR,timestamp:new Date().getTime(),uniqueId:e,methodName:ro.REVOKE_ACCESS_ON_USER_LOGOUT,source:"internal",payload:{result:{data:l,success:!1,statusCode:500}}})}}}catch(t){this.coreActionsService.triggerAction(Qe.PERMISSION_PROVIDER,{event:K.Events.PermissionProvider.REVOKE_ACCESS_ON_USER_LOGOUT_ERROR,timestamp:new Date().getTime(),uniqueId:e,methodName:ro.REVOKE_ACCESS_ON_USER_LOGOUT,source:"internal",payload:{error:t}}),this.loggingService.catch("Error in UsersPermissionService revokeAccessOnUserLogout:",t)}})}getRevokeKey(e){try{return`${e.userId}_${e.resourceId}_${e.type}_${e.organizationId}`}catch(t){return this.loggingService.catch("Error in UsersPermissionService getRevokeKey:",t),""}}cancelPendingRevokes(e){try{e.forEach(t=>{let i=this.getRevokeKey({userId:t.userId,resourceId:t.resource.id,type:t.resource.type,organizationId:t.resource.organizationId});this.pendingRevokeRequests.has(i)&&this.pendingRevokeRequests.delete(i)}),this.pendingRevokeRequests.size===0&&this.pendingRevokeTimeoutId&&(clearTimeout(this.pendingRevokeTimeoutId),this.pendingRevokeTimeoutId=null)}catch(t){this.loggingService.catch("Error in UsersPermissionService cancelPendingRevokes:",t)}}flushPendingRevokes(){return Q(this,null,function*(){let e=this.pendingRevokeUniqueId,t=this.pendingRevokeUserId;try{let i=Array.from(this.pendingRevokeRequests.values());if(this.pendingRevokeRequests.clear(),this.pendingRevokeTimeoutId=null,this.pendingRevokeUniqueId="",this.pendingRevokeUserId="",i.length===0)return;let a=this.getPermissionsCache()??[];i.forEach(s=>{a=a.filter(d=>!(d.resourceId===s.resourceId&&d.type===s.type&&d.organizationId===s.organizationId&&d.userId===s.userId))}),this.setPermissionsCache(a);let l=yield this.revokeAccess({requests:i,userId:t});l.success?this.coreActionsService.triggerAction(Qe.PERMISSION_PROVIDER,{event:K.Events.PermissionProvider.REVOKE_ACCESS_ON_DOCUMENT_UNSET_RESULT,timestamp:new Date().getTime(),uniqueId:e,methodName:ro.REVOKE_ACCESS_ON_DOCUMENT_UNSET,source:"internal",payload:{result:{data:l,success:!0,statusCode:200}}}):this.coreActionsService.triggerAction(Qe.PERMISSION_PROVIDER,{event:K.Events.PermissionProvider.REVOKE_ACCESS_ON_DOCUMENT_UNSET_ERROR,timestamp:new Date().getTime(),uniqueId:e,methodName:ro.REVOKE_ACCESS_ON_DOCUMENT_UNSET,source:"internal",payload:{result:{data:l,success:!1,statusCode:500}}})}catch(i){this.coreActionsService.triggerAction(Qe.PERMISSION_PROVIDER,{event:K.Events.PermissionProvider.REVOKE_ACCESS_ON_DOCUMENT_UNSET_ERROR,timestamp:new Date().getTime(),uniqueId:e,methodName:ro.REVOKE_ACCESS_ON_DOCUMENT_UNSET,source:"internal",payload:{error:i}}),this.loggingService.catch("Error in UsersPermissionService flushPendingRevokes:",i)}})}revokeAccessOnDocumentUnset(a){return Q(this,arguments,function*({documentIds:e,folderId:t,context:i}){let l=ot();try{if(this.isRevokeAccessOnDocumentUnsetEnabled){let s=[],d=this.docService.getOrganizationConfig()?.clientOrganizationId??"",g=this.authService.getUser()?.userId??"",u=this.getPermissionsCache()??[];e.forEach(b=>{u=this.collectRevokeRequest(u,s,b.clientDocumentId,oa.DOCUMENT,d,g)}),t&&(u=this.collectRevokeRequest(u,s,t,oa.FOLDER,d,g)),d&&this.isRevokeOrganizationAccessOnDocumentUnsetEnabled&&(u=this.collectRevokeRequest(u,s,d,oa.ORGANIZATION,d,g)),i&&this.getIsContextEnabled()&&FN({input:i}).forEach(E=>{let A=JSON.stringify(E.access);u=this.collectRevokeRequest(u,s,A,oa.CONTEXT,d,g)}),this.setPermissionsCache(u),s.length>0&&(this.coreActionsService.triggerAction(Qe.PERMISSION_PROVIDER,{event:K.Events.PermissionProvider.REVOKE_ACCESS_ON_DOCUMENT_UNSET_FORMED,timestamp:new Date().getTime(),uniqueId:l,methodName:ro.REVOKE_ACCESS_ON_DOCUMENT_UNSET,source:"internal",payload:{requests:s}}),this.coreActionsService.triggerAction(Qe.PERMISSION_PROVIDER,{event:K.Events.PermissionProvider.REVOKE_ACCESS_ON_DOCUMENT_UNSET_TRIGGERED,timestamp:new Date().getTime(),uniqueId:l,methodName:ro.REVOKE_ACCESS_ON_DOCUMENT_UNSET,source:"internal",payload:{requests:s}}),s.forEach(b=>{this.pendingRevokeRequests.set(this.getRevokeKey(b),b)}),this.pendingRevokeUniqueId=l,this.pendingRevokeUserId=g,this.pendingRevokeTimeoutId&&clearTimeout(this.pendingRevokeTimeoutId),this.pendingRevokeTimeoutId=setTimeout(()=>this.flushPendingRevokes(),this.REVOKE_DELAY_MS))}}catch(s){this.coreActionsService.triggerAction(Qe.PERMISSION_PROVIDER,{event:K.Events.PermissionProvider.REVOKE_ACCESS_ON_DOCUMENT_UNSET_ERROR,timestamp:new Date().getTime(),uniqueId:l,methodName:ro.REVOKE_ACCESS_ON_DOCUMENT_UNSET,source:"internal",payload:{error:s}}),this.loggingService.catch("Error in UsersPermissionService revokeAccessOnDocumentUnset:",s)}})}getAccess(i){return Q(this,arguments,function*({requests:e,userId:t}){let a=Gr(this.functions,Wr({url:En?.cloudFunction?.sdkProxy,apiProxyDomain:this.configService?.getApiProxyDomain()}));return yield _l({methodName:"getAccess",data:{type:"getAccess",data:e,metadata:{retryConfig:this.getPermissionProviderRetryConfig()}},getSdkProxy:a,userId:t})})}revokeAccess(i){return Q(this,arguments,function*({requests:e,userId:t}){let a=Gr(this.functions,Wr({url:En?.cloudFunction?.sdkProxy,apiProxyDomain:this.configService?.getApiProxyDomain()}));return yield _l({methodName:"revokeAccess",data:{type:"revokeAccess",data:e,metadata:{retryConfig:this.getPermissionProviderRetryConfig()}},getSdkProxy:a,userId:t})})}onResourceAccessRequired(s){return Q(this,arguments,function*({requests:e,uniqueId:t,methodName:i,userId:a,fromCache:l=!0}){try{if(!e?.length)return;let d=[],g=this.getPermissionsCache()??[];if(!this.forceRefreshPermissions()&&l&&(e.forEach(u=>{let b=g?.find(E=>E.resourceId===u.resource.id&&E.type===u.resource.type&&E.userId===u.userId&&E.organizationId===u.resource.organizationId);b&&d.push(b)}),d.length>0&&(e=e.filter(u=>!d.find(b=>b.resourceId===u.resource.id&&b.type===u.resource.type&&b.userId===u.userId&&b.organizationId===u.resource.organizationId)))),e.length>0){this.coreActionsService.triggerAction(Qe.PERMISSION_PROVIDER,{event:K.Events.PermissionProvider.RESOURCE_ACCESS_REQUEST_TRIGGERED,timestamp:new Date().getTime(),uniqueId:t,methodName:i,source:"internal",payload:{requests:e,fromCache:l}});let u=yield this.getAccess({requests:e,userId:this.authService.getUser()?.userId??a??""});return this.coreActionsService.triggerAction(Qe.PERMISSION_PROVIDER,{event:K.Events.PermissionProvider.RESOURCE_ACCESS_RESULT,timestamp:new Date().getTime(),uniqueId:t,methodName:i,source:"internal",payload:{result:u}}),u?.success&&u?.data?.length&&(this.setPermissionsCache([...g,...u.data]),u.data=[...d,...u.data]),u}else if(d.length>0)return this.coreActionsService.triggerAction(Qe.PERMISSION_PROVIDER,{event:K.Events.PermissionProvider.RESOURCE_ACCESS_RESULT_FROM_CACHE,timestamp:new Date().getTime(),methodName:i,source:"internal",uniqueId:t,payload:{results:{data:d,success:!0,statusCode:200}}}),{data:d,success:!0,statusCode:200};return}catch(d){this.loggingService.catch("Error in UsersPermissionService onResourceAccessRequired:",d),this.coreActionsService.triggerAction(Qe.PERMISSION_PROVIDER,{event:K.Events.PermissionProvider.RESOURCE_ACCESS_ERROR,timestamp:new Date().getTime(),methodName:i,source:"internal",uniqueId:t,payload:{error:d,requests:e,fromCache:l}});return}})}getPermissionsCache(){return this.forceRefreshPermissions()?[]:this.permissionsCache$.getValue()}forceRefreshPermissions(){return this.getPermissionProvider()?.forceRefresh??!1}setPermissionsCache(e){try{let t=new Map;e.forEach(a=>{let l=`${a.userId}_${a.resourceId}_${a.organizationId}_${a.type}`;t.set(l,a)});let i=JSON.parse(JSON.stringify(Array.from(t.values())));this.permissionsCache$.next(i)}catch(t){this.loggingService.catch("Error in UsersPermissionService setPermissionsCache:",t)}}isPermissionProviderAvailable(){try{return!!this.permissionProvider$.getValue()}catch(e){return this.loggingService.catch("Error in UsersPermissionService isPermissionProviderAvailable:",e),!1}}getPermissionProvider(){try{return this.permissionProvider$.getValue()}catch(e){return this.loggingService.catch("Error in UsersPermissionService getPermissionProvider:",e),null}}getPermissionProvider$(){return this.permissionProvider$.asObservable()}};o.\u0275fac=function(t){return new(t||o)(X(We),X(ct),X(x),X(Tn),X(An),X(cv),X(tr),X(Do),X(Ft),X(dn))},o.\u0275prov=Me({token:o,factory:o.\u0275fac,providedIn:"root"});let n=o;return n})();var Hi=(()=>{let o=class o{constructor(e,t,i,a,l,s,d,g,u,b,E,A){this.afAuth=e,this.analyticsService=t,this.authService=i,this.configService=a,this.databaseService=l,this.commonDbService=s,this.docService=d,this.domService=g,this.emojiService=u,this.iamService=b,this.loggingService=E,this.userPermissionService=A,this.documentPaths=null,this.reactionAnnotationById$=new Se({}),this.customReactions$=new Se({}),this.commentService=null,this.darkMode$=new Se(null),this.loggingService.log("%c[WB] Creating CLASS: ReactionService","color: blue;"),this.analyticsService.setReactionService(this),this.authService.setReactionService(this),this.databaseService.getDb().pipe($e(M=>!!M),ut(1)).subscribe(M=>{M&&this.getAllReactionAnnotations(void 0,void 0,!0).subscribe()},M=>{this.loggingService.catch("Error in ReactionService getDb subscription: ",M)})}setCommentService(e){this.loggingService.log("%c[WB] Calling FUNCTION: setCommentService","color: green;");try{this.commentService=e}catch(t){this.loggingService.catch("Error in ReactionService setCommentService: ",t)}}clearCache(){this.loggingService.log("%c[WB] Calling FUNCTION: clearCache in ReactionService","color: green;");try{this.reactionAnnotationById$.next({}),this.customReactions$.next({}),this.documentPaths=null}catch(e){this.loggingService.catch("Error in ReactionService clearCache: ",e)}}getAllReactionAnnotations(e,t,i,a,l){this.loggingService.log("%c[WB] Calling FUNCTION: getAllReactionAnnotations","color: green;");let s,d;try{if(e&&(d=`${Qn(e)}`),t&&typeof t=="object"){let g=Oi(t);s=Qn(JSON.stringify(g))}}catch(g){this.loggingService.catch("Error in ReactionService getAllReactionAnnotations: ",g)}return fr(this.afAuth).pipe($e(g=>!!g),_e(g=>this.isFeatureAllowed({firebaseUser:g,annotations:[],filteredAnnotations:[]})),_e(g=>g.featureAllowed?this.iamService.isUserAllowed$().pipe(ue(u=>(g.featureAllowed=u,g))):le(g)),_e(g=>g.featureAllowed?le(g).pipe(_e(u=>this.docService.getDocumentPaths$().pipe(ue(b=>(this.documentPaths=b,u.documentPaths=b,u)))),_e(u=>d?this.getDataFromDocumentIds([d]).pipe(ue(b=>(u.annotations=b||[],f({},u)))):this.docService.getDocumentIds$().pipe(_e(b=>{let E=b?.length>0?b.map(A=>A.documentId):[this.documentPaths?.documentId??""];return this.getDataFromDocumentIds(E).pipe(ue(A=>(u.annotations=A||[],f({},u))))}))),_e(u=>this.docService.getLocation$().pipe(ue(b=>(u.location=b,u)))),_e(u=>this.docService.getLocations$().pipe(ue(b=>(u.customLocations=b,u)))),ue(u=>{if(u.filteredAnnotations=[],d&&!s)return u.filteredAnnotations=u.annotations?.slice(),u;{let b=[];return s?b.push(s):(b.push(u?.location?.locationId),b.push(...Object.values(u?.customLocations||[]).map(E=>E.locationId))),u.filteredAnnotations=this.filterAnnotationsByLocationIds(u?.annotations,b),u}}),_e(u=>i?le(u):u?.annotations?.length?this.domService.onWindowResize$().pipe(ue(()=>u)):le(u)),_e(u=>i?le(u):le(u)),ue(u=>u),_e(u=>u?.filteredAnnotations?le(u?.filteredAnnotations||[]):le([]))):le([])),xt(Jt))}isFeatureAllowed(e){return this.configService.getConfig$().pipe($e(t=>!!t),ue(t=>k(f({},e),{config:t})),_e(t=>this.authService.getUser$().pipe(ue(i=>k(f({},t),{user:i})))),_e(t=>Ao(t.config,t.user,je.REACTION)?le(k(f({},t),{featureAllowed:!0})):(this.loggingService.warn("Reaction feature is not allowed."),le(k(f({},t),{featureAllowed:!1})))),xt((t,i)=>t?.featureAllowed===i?.featureAllowed))}getDataFromDocumentIds(e,t){return this.getDataFromDocuments({documentIds:e,filters:t})}getDataFromDocuments(e){if(this.configService?.getApiKey()){let{documentIds:t,filters:i}=e;if(t?.some(d=>!d)||!this.documentPaths)return le([]);let a=this.docService.getDocumentPaths()?.veltFolderId,l=le([]),s={useCollectionGroup:!0,isCollection:!0,useQuery:!0};if(this.commonDbService.shouldUseFirestore()||(s.documentId=t?.length?t[0]:void 0,s.organizationId=this.documentPaths?.organizationId),this.userPermissionService?.getIsContextEnabled()){let d=[U.DEFAULT_VELT_CONTEXT,...this.docService.getProcessedDocContext()],g=[];for(let u=0;u<(d?.length??0);u+=U.LISTENER_CONTEXT_BATCH_SIZE)g.push(d?.slice(u,u+U.LISTENER_CONTEXT_BATCH_SIZE)??[]);l=pn(g.map(u=>this.commonDbService.dbListener({feature:"allReactions",properties:k(f({},s),{firestoreQuery:[_r(ft("metadata.apiKey","==",this.configService?.getApiKey()),ft("metadata.documentId","in",t),ft("metadata.organizationId","==",this.documentPaths?.organizationId),...a?[ft("metadata.veltFolderId","==",a)]:[],...u?.length?[ft("context.accessFields","array-contains-any",u)]:[])]})}).pipe(la()))).pipe(ue(u=>Ra(u)))}else{let d=[];for(let g=0;g<(t?.length??0);g+=U.LISTENER_BATCH_SIZE)d.push(t?.slice(g,g+U.LISTENER_BATCH_SIZE)??[]);l=pn(d.map(g=>this.commonDbService.dbListener({feature:"allReactions",properties:k(f({},s),{firestoreQuery:[_r(ft("metadata.apiKey","==",this.configService?.getApiKey()),ft("metadata.documentId","in",g),ft("metadata.organizationId","==",this.documentPaths?.organizationId),...a?[ft("metadata.veltFolderId","==",a)]:[])]})}).pipe(la()))).pipe(ue(g=>Ra(g)))}return l.pipe(ue(d=>({data:d?.data,operation:d?.operation})),ue(({data:d,operation:g})=>{let u=[];return d&&(u=Object.values(d??{}).filter(b=>typeof b=="object")),u?.forEach(b=>{this.sanitizeReactionAnnotation(b)}),{data:u,operation:g}}),ue(({data:d,operation:g})=>{if(!t)return{data:d,documentMap:{},operation:g};let u=d.reduce((b,E)=>{let A=E.metadata?.documentId;return A&&(b[A]||(b[A]=[]),b[A].push(E)),b},{});return{data:d,documentMap:u,operation:g}}),ue(({data:d,documentMap:g,operation:u})=>{if(!i)if(u?.type==="removed"){if(u?.ids?.length){let b=this.reactionAnnotationById$.value;u?.ids?.forEach(E=>{delete b?.[E]}),this.reactionAnnotationById$.next(b)}}else Object.entries(g??{}).forEach(([b,E])=>{this.setReactionAnnotationsByOrganizationIdAndDocumentId({organizationId:this.documentPaths?.organizationId,documentId:b,annotations:E})});return d}),Jn(d=>(this.loggingService.catch("Error in ReactionService getDataFromDocumentId: ",d),le([]))))}else return le([])}setReactionAnnotationsByOrganizationIdAndDocumentId({organizationId:e,documentId:t,annotations:i,queryHash:a}){try{if(t){e||(e=U.NO_ORGANIZATION_ID),a||(a=U.DEFAULT_QUERY_HASH);let l={};i?.forEach(d=>{d?.annotationId&&(l[d?.annotationId]=d)});let s=f(f({},this.reactionAnnotationById$.value),l);this.reactionAnnotationById$.next(s)}}catch(l){this.loggingService.catch("Error in ReactionService setReactionAnnotationsByOrganizationIdAndDocumentId:",l)}}getReactionAnnotationsByOrganizationIdAndDocumentId({organizationId:e,documentId:t}){try{let i={};return Object.values(this.reactionAnnotationById$.value??{}).forEach(a=>{a?.metadata?.documentId==t&&a?.metadata?.organizationId==e&&(i[a?.annotationId]=a)}),Object.values(i)}catch(i){return this.loggingService.catch("Error in ReactionService getReactionAnnotationsByOrganizationIdAndDocumentId:",i),[]}}getLocations$(){return this.docService.getLocation$().pipe(_e(e=>this.docService.getLocations$().pipe(ue(t=>({location:e,locations:t})))),ue(e=>{let t=[];return t.push(e?.location?.locationId),t.push(...Object.values(e.locations||[]).map(i=>i.locationId)),t||[]}))}filterAnnotationsByLocationIds(e,t){try{return e.filter(i=>t.includes(i.locationId))}catch(i){return this.loggingService.catch("Error in ReactionService filterAnnotationsByLocations:",i),[]}}getAnnotationById(e,t){try{let i=this.reactionAnnotationById$.value?.[e];if(i){let{documentId:a,organizationId:l}=t||{};if(a&&i.metadata?.documentId!==a||l&&i.metadata?.organizationId!==l)return}return i}catch(i){this.loggingService.catch("Error in ReactionService getAnnotationById: ",i);return}}getBaseMetadataFromReactionAnnotationId(e){try{let t=this.reactionAnnotationById$.value?.[e];return t?t.metadata:void 0}catch(t){this.loggingService.catch("Error in ReactionService getBaseMetadataFromReactionAnnotationId: ",t);return}}getReactionAnnotationByAnnotationId(e,t){try{return this.reactionAnnotationById$.pipe(ue(()=>this.getAnnotationById(e,t)),_e(i=>i?le(i):le(i)))}catch(i){return this.loggingService.catch("Error in ReactionService getReactionAnnotationByAnnotationId: ",i),le(void 0)}}getReactionAnnotationsBySectionId(e){try{return this.reactionAnnotationById$.pipe(_e(t=>this.docService.getDocumentPaths$().pipe(ue(i=>({documentPaths:i,sectionId:e,reactionAnnotationsMap:t})))),_e(t=>{let i=tl(e,["id","data-id"]);if(i){let a=this.docService.getAdditionLocationFromElement(i);if(a){let l=this.docService.genarateLocationId(a);return this.docService.getLocations$().pipe(ue(s=>{let g=Object.values(s||{}).find(u=>u.locationId===l||a?.id&&u.location.id===a.id);return k(f({},t),{additionalLocation:g,locationOnElement:!!a})}))}}return le(k(f({},t),{additionalLocation:null,element:i}))}),_e(t=>t?.locationOnElement?le(t):this.docService.getLocation$().pipe(ue(i=>k(f({},t),{location:i})))),ue(({documentPaths:t,location:i,additionalLocation:a,locationOnElement:l,element:s})=>{let d=null,g=this.docService.getAdditionalDocumentIdFromElement(s),u=g?this.docService.generateDocumentId(g):t?.documentId,b=t?.organizationId;if(u){let E=this.getReactionAnnotationsByOrganizationIdAndDocumentId({organizationId:b,documentId:u});if(E){d=[];for(let A of E)A?.targetElementId===e&&(l?a&&s0({location:a?.location,locationId:a?.locationId},{location:A.location,locationId:A.locationId})&&d.push(A):i?s0({location:i?.location,locationId:i?.locationId},{location:A.location,locationId:A.locationId})&&d.push(A):A?.locationId||d.push(A))}}return d}))}catch(t){return this.loggingService.catch("Error in ReactionService getReactionAnnotationsBySectionId: ",t),le(null)}}addOrUpdateReaction(e,t,i,a,l,s,d,g){return Q(this,null,function*(){try{let u=t?.map(b=>this.getAnnotationById(b)).find(b=>b?.icon===e);if(u){if(!d||d==="delete")return yield this.updateUserInReaction(u)}else if(!d||d==="add")return yield this.addReaction(void 0,e,i,a,l,s,g)}catch(u){this.loggingService.catch("Error in ReactionService addOrUpdateReaction: ",u)}})}addReaction(e,t,i,a,l,s,d){return Q(this,null,function*(){this.loggingService.log("%c[WB] Calling FUNCTION: addReaction","color: green;");try{let g=this.authService.getUser();if(g)if(g.isReadOnly||g.isAnonymous)this.loggingService.catch("Anonymous/Readonly users cannot add reactions.");else{let u=new dL;if(u.from=g,u.lastUpdated=this.timestamp,u.reactions=[],u.reactions.push({from:g,lastUpdated:this.timestamp}),a&&(u.targetElementId=a),l){u.commentAnnotationId=l;let b=this.commentService?.getAnnotationById(l);if(b?.context?.access&&b?.context?.accessFields){if(!this.userPermissionService?.hasUserContextAccess({userId:g.userId,accessFields:b.context.accessFields})){this.loggingService.catch("User does not have context access to add reaction annotation.",void 0,void 0,!0);return}u.context={access:b.context.access,accessFields:b.context.accessFields}}}if(this.setLocationToReactionAnnotation(u),u.pageInfo=to(),u.pageInfo&&(u.pageInfo.screenWidth=this.domService.getCurrentWindowSizeValue()?.screenWidth),t)if(u.icon=t,s)u.iconUrl=s?.url,u.iconEmoji=s?.emoji;else{let b=this.customReactions$.value;if(b){let E=b[t];E?.url&&(u.iconUrl=E?.url),E?.emoji&&(u.iconEmoji=E?.emoji)}}return i&&(u.location={},u.location=f({},i),u.locationId=this.docService.genarateLocationId(u.location)),yield this.saveReactionToDb(u)}}catch(g){this.loggingService.catch("Error in ReactionService addReaction: ",g)}})}setLocationToReactionAnnotation(e){try{let t=this.docService.getLocation();t?(e.locationId=t.locationId,e.location=t.location):(delete e.locationId,delete e.location);try{let i;e.targetElement?.xpath?i=this.domService.getElementFromXPath(e.targetElement.xpath):e.targetElementId&&(i=tl(e.targetElementId,["id","data-id"]));let a=this.docService.getAdditionLocationFromElement(i);if(a){let l=this.docService.addLocation({location:a,source:"internal"});l?.[0]&&(e.locationId=l[0].locationId,e.location=l[0].location)}}catch{}}catch(t){this.loggingService.catch("Error in ReactionService setLocationToReactionAnnotation:",t)}}getElementForReactionAnnotation(e){try{let t;return e.targetElementId&&(t=tl(e.targetElementId,["id","data-id"])),t}catch(t){return this.loggingService.catch("Error in ReactionService getElementForReactionAnnotation: ",t),null}}saveReactionToDb(e){return Q(this,null,function*(){this.loggingService.log("%c[WB] Calling FUNCTION: saveReactionToDb","color: green;");try{if(this.authService.getUser()){let t=yield this.docService.getDocumentPaths$().pipe($e(a=>!!a),ut(1)).toPromise();if(!t)throw new Error("Document paths not found.");if(this.documentPaths=t,this.loggingService.log(this.documentPaths),!(yield this.databaseService.getDb().pipe($e(a=>!!a),ut(1)).toPromise()))throw new Error("Database not found.");if(this.documentPaths?.reaction){if(e.annotationId=this.commonDbService.generateDocumentId(),e.pageInfo,!e?.metadata?.documentId){e?.metadata||(e.metadata={});let g=this.getElementForReactionAnnotation(e),u=this.docService.getBaseMetadata("reaction",{commentAnnotationId:e.commentAnnotationId,element:g});e.metadata=f(f({},e?.metadata),u)}let a=JSON.parse(JSON.stringify(e));a.position=null;let{documentId:l,organizationId:s}=this.getDocumentIdAndOrganizationIdFromReactionAnnotation(e),d=e.commentAnnotationId?void 0:{annotationData:a,actionType:"add",notificationSource:"reaction"};return yield this.commonDbService.setData({feature:"reaction",properties:{id:e.annotationId,documentId:l,organizationId:s},data:a,extraData:d}),a}else return}}catch(t){this.loggingService.catch("Error in ReactionService saveReactionToDb: ",t)}})}getDocumentIdAndOrganizationIdFromReactionAnnotation(e){try{return{documentId:e?.metadata?.documentId,organizationId:e?.metadata?.organizationId}}catch(t){return this.loggingService.catch("Error in ReactionService getDocumentIdAndOrganizationIdFromReactionAnnotation: ",t),{}}}updateUserInReaction(e){return Q(this,null,function*(){try{let t=this.authService.getUser();if(t)return e?.reactions||(e.reactions=[]),e?.reactions?.find(a=>a?.from?.userId===t?.userId)?e.reactions=e?.reactions?.filter(a=>a?.from?.userId!==t?.userId):e.reactions.push({from:t,lastUpdated:this.timestamp}),e.reactions.length?yield this.updateReaction(e):yield this.deleteReactionPinAnnotation(e?.annotationId),e}catch(t){this.loggingService.catch("Error in ReactionService updateUserInReaction: ",t)}})}removeUserFromReaction(e){this.loggingService.log("%c[WB] Calling FUNCTION: removeUserFromReaction","color: green;");try{let t=this.authService.getUser();t&&(e?.reactions||(e.reactions=[]),e.reactions=e?.reactions?.filter(i=>i?.from?.userId!==t?.userId),this.updateReaction(e))}catch(t){this.loggingService.catch("Error in ReactionService removeUserFromReaction: ",t)}}updateReaction(e,t,i){return Q(this,null,function*(){this.loggingService.log("%c[WB] Calling FUNCTION: updateReaction","color: green;");try{if(this.authService.getUser()){if(e?.targetElement?.xpath){let d=this.domService.getXPath(e.targetElement.xpath);if(d){let g=d.iterateNext();g&&(Zr(g)||(e.targetElement=null))}}let a=JSON.parse(JSON.stringify(e));if(a.position=null,a.lastUpdated=this.timestamp,!a?.metadata?.documentId){a?.metadata||(a.metadata={});let d=this.docService.getBaseMetadata("reaction",{commentAnnotationId:e.commentAnnotationId});a.metadata=f(f({},a?.metadata),d)}let{documentId:l,organizationId:s}=a?.metadata||{};return i?yield this.commonDbService.updateData({feature:"reaction",properties:{id:e.annotationId,documentId:l,organizationId:s},data:JSON.parse(JSON.stringify(a))}):yield this.commonDbService.setData({feature:"reaction",properties:{id:e.annotationId,documentId:l,organizationId:s},data:JSON.parse(JSON.stringify(a))}),a}}catch(a){this.loggingService.catch("Error in ReactionService updateReaction: ",a)}})}deleteReactionPinAnnotation(e,t){return Q(this,null,function*(){try{let i=this.getAnnotationById(e),{documentId:a,organizationId:l}=this.getDocumentIdAndOrganizationIdFromReactionAnnotation(i),s=i&&!i.commentAnnotationId?{annotationData:i,actionType:"delete",notificationSource:"reaction"}:void 0;yield this.commonDbService.deleteData({feature:"reaction",properties:{id:e,documentId:a,organizationId:l},extraData:s})}catch(i){this.loggingService.catch("Error in ReactionService deleteReactionPinAnnotation: ",i)}})}setCustomReactions(e){try{this.loggingService.log("%c[WB] Calling FUNCTION: setCustomReactions","color: green;"),this.customReactions$.next(e),this.emojiService.setEmojiList(e)}catch(t){this.loggingService.catch("Error in ReactionService setCustomReactions: ",t)}}enableDarkMode(){try{if(this.loggingService.log("%c[WB] Calling FUNCTION: enableDarkMode","color: green;"),this.darkMode$.value===!0)return;this.darkMode$.next(!0)}catch(e){this.loggingService.catch("Error in ReactionService enableDarkMode: ",e)}}disableDarkMode(){try{if(this.loggingService.log("%c[WB] Calling FUNCTION: disableDarkMode","color: green;"),this.darkMode$.value===!1)return;this.darkMode$.next(!1)}catch(e){this.loggingService.catch("Error in ReactionService disableDarkMode: ",e)}}getDarkMode(){return this.darkMode$.value}getDarkMode$(){return this.darkMode$.asObservable()}sanitizeReactionAnnotation(e){try{e&&(e.iconUrl&&(e.iconUrl=this.domService.sanitizeHtml(e.iconUrl)),e.iconEmoji&&(e.iconEmoji=this.domService.sanitizeHtml(e.iconEmoji)),e.icon&&(e.icon=this.domService.sanitizeHtml(e.icon)))}catch(t){this.loggingService.catch("Error in ReactionService sanitizeReactionAnnotation: ",t)}}get timestamp(){return this.commonDbService.getServerTimestamp()}getReactionAnnotationForClient(e){try{let t=["isReactionResolverUsed","pageInfo","from","involvedUserIds","position"],i=JSON.parse(JSON.stringify(e)),a={};return Object.keys(i).forEach(l=>{t.includes(l)||(l==="reactions"?a.fromUsers=i[l]:a[l]=i[l])}),a}catch(t){return this.loggingService.catch("Error in ReactionService getReactionAnnotationForClient: ",t),e}}};o.\u0275fac=function(t){return new(t||o)(X(eo),X(lt),X(We),X(Ft),X($n),X(Tn),X(ct),X(Be),X(vv),X(Ln),X(x),X(il))},o.\u0275prov=Me({token:o,factory:o.\u0275fac,providedIn:"root"});let n=o;return n})();var Tg={user:"componentConfigSignal.appState.user",isUserAdmin:"componentConfigSignal.appState.isUserAdmin",isKnownUser:"componentConfigSignal.appState.isKnownUser",repliesUniqueUsers:"componentConfigSignal.appState.repliesUniqueUsers",annotation:"componentConfigSignal.data.annotation",annotations:"componentConfigSignal.data.annotations",allAnnotations:"componentConfigSignal.data.allAnnotations",ghostComment:"componentConfigSignal.data.ghostComment",selectedFiles:"parentLocalUIState.selectedFiles",invalidSelectedFiles:"parentLocalUIState.invalidSelectedFiles",selectedAttachments:"parentLocalUIState.selectedAttachments",editComment:"parentLocalUIState.editComment",editCommentIndex:"parentLocalUIState.editCommentIndex",assignTo:"componentConfigSignal.data.assignTo",selectedUserContacts:"componentConfigSignal.data.selectedUserContacts",localRecordedData:"parentLocalUIState.localRecordedData",customList:"componentConfigSignal.data.customList",toOrganizationUserGroup:"componentConfigSignal.data.toOrganizationUserGroup",taggedUserContacts:"componentConfigSignal.data.taggedUserContacts",taggedGroups:"componentConfigSignal.data.taggedGroups",attachmentsToDelete:"parentLocalUIState.attachmentsToDelete",customChipData:"componentConfigSignal.data.customChipData",selectedCustomChipSet:"componentConfigSignal.data.selectedCustomChipSet",currentDialogView:"componentConfigSignal.data.currentDialogView",sidebarMode:"parentLocalUIState.sidebarMode",inboxMode:"parentLocalUIState.inboxMode",dialogMode:"parentLocalUIState.dialogMode",inlineCommentMode:"parentLocalUIState.inlineCommentMode",inlineCommentSectionMode:"parentLocalUIState.inlineCommentSectionMode",focusedThreadMode:"parentLocalUIState.focusedThreadMode",isFocusedThreadEnabled:"parentLocalUIState.isFocusedThreadEnabled",pageModeComposer:"parentLocalUIState.pageModeComposer",darkMode:"parentLocalUIState.darkMode",variant:"parentLocalUIState.variant",disabled:"parentLocalUIState.disabled",commentPinSelected:"parentLocalUIState.commentPinSelected",fullExpanded:"parentLocalUIState.fullExpanded",commentDialogSelected:"parentLocalUIState.commentDialogSelected",readOnly:"parentLocalUIState.readOnly",dialogShadowDOM:"parentLocalUIState.dialogShadowDOM",locationVersion:"parentLocalUIState.locationVersion",composerPosition:"parentLocalUIState.composerPosition",dialogOpenedInSidebar:"parentLocalUIState.dialogOpenedInSidebar",expandOnSelection:"parentLocalUIState.expandOnSelection",selectedVisibility:"parentLocalUIState.selectedVisibility",selectedVisibilityUsers:"parentLocalUIState.selectedVisibilityUsers",containerComponentId:"componentConfigSignal.uiState.containerComponentId",isPrivateComment:"componentConfigSignal.uiState.isPrivateComment",assignToMenuOpened:"parentLocalUIState.assignToMenuOpened",showGhostCommentMessage:"componentConfigSignal.uiState.showGhostCommentMessage",showReplies:"componentConfigSignal.uiState.showReplies",collapsedComments:"componentConfigSignal.uiState.collapsedComments",showAllComments:"componentConfigSignal.uiState.showAllComments",composerContent:"parentLocalUIState.composerContent",composerContentHTML:"parentLocalUIState.composerContentHTML",composerInOpenState:"parentLocalUIState.composerInOpenState",composerMode:"componentConfigSignal.uiState.composerMode",multiThreadAnnotationId:"componentConfigSignal.uiState.multiThreadAnnotationId",maxReplyAvatars:"componentConfigSignal.uiState.maxReplyAvatars",showSuggestionModeActions:"componentConfigSignal.uiState.showSuggestionModeActions",uploadingAttachments:"componentConfigSignal.uiState.uploadingAttachments",playVideoInFullScreen:"componentConfigSignal.uiState.playVideoInFullScreen",commentDialogUniqueId:"componentConfigSignal.uiState.commentDialogUniqueId",recorderInitConfig:"componentConfigSignal.uiState.recorderInitConfig",isInputFocused:"componentConfigSignal.uiState.isInputFocused",showCommentButtons:"componentConfigSignal.uiState.showCommentButtons",isAutocompleteDropdownOpen:"componentConfigSignal.uiState.isAutocompleteDropdownOpen",bottomSheetMode:"componentConfigSignal.uiState.bottomSheetMode",commentComposerMode:"componentConfigSignal.uiState.commentComposerMode",shouldScrollToBottom:"componentConfigSignal.uiState.shouldScrollToBottom",deviceType:"componentConfigSignal.uiState.deviceType",showReplyComposer:"componentConfigSignal.uiState.showReplyComposer",reactionToolOpenIndex:"componentConfigSignal.uiState.reactionToolOpenIndex",openDropdownIndexValue:"componentConfigSignal.uiState.openDropdownIndexValue",hasReactionsByCommentId:"componentConfigSignal.uiState.hasReactionsByCommentId",newComment:"parentLocalUIState.composerContent",newCommentHTML:"parentLocalUIState.composerContentHTML",canResolveAnnotation:"componentConfigSignal.featureState.canResolveAnnotation",canUnresolveAnnotation:"componentConfigSignal.featureState.canUnresolveAnnotation",dialogSelectedByKnownUser:"componentConfigSignal.featureState.dialogSelectedByKnownUser",resolveStatusAccessAdminOnly:"componentConfigSignal.featureState.resolveStatusAccessAdminOnly",enableResolve:"componentConfigSignal.featureState.enableResolve",isPlanExpired:"componentConfigSignal.featureState.isPlanExpired",moderatorMode:"componentConfigSignal.featureState.moderatorMode",enableAutoCategorize:"componentConfigSignal.featureState.enableAutoCategorize",suggestionMode:"componentConfigSignal.featureState.suggestionMode",commentAcceptedStatus:"componentConfigSignal.featureState.commentAcceptedStatus",commentRejectedStatus:"componentConfigSignal.featureState.commentRejectedStatus",enableSignInButton:"componentConfigSignal.featureState.enableSignInButton",enableUpgradeButton:"componentConfigSignal.featureState.enableUpgradeButton",enableGhostCommentsMessage:"componentConfigSignal.featureState.enableGhostCommentsMessage",replyAvatars:"componentConfigSignal.featureState.replyAvatars",userMentions:"componentConfigSignal.featureState.userMentions",recordingSummaryEnabled:"componentConfigSignal.featureState.recordingSummaryEnabled",enableAttachment:"componentConfigSignal.featureState.enableAttachment",allowedFileTypes:"componentConfigSignal.featureState.allowedFileTypes",allowedRecordings:"componentConfigSignal.featureState.allowedRecordings",screenSharingSupported:"componentConfigSignal.featureState.screenSharingSupported",enterKeyToSubmit:"componentConfigSignal.featureState.enterKeyToSubmit",deleteOnBackspace:"componentConfigSignal.featureState.deleteOnBackspace",showScreenSizeInfo:"componentConfigSignal.uiState.showScreenSizeInfo",enableReactions:"componentConfigSignal.featureState.enableReactions",isInsidePdfViewer:"componentConfigSignal.featureState.isInsidePdfViewer",sidebarButtonOnCommentDialogVisible:"componentConfigSignal.uiState.sidebarButtonOnCommentDialogVisible",enableStatus:"componentConfigSignal.featureState.enableStatus",customStatusesShown:"componentConfigSignal.featureState.customStatusesShown",statusOptions:"componentConfigSignal.featureState.statusOptions",enablePriority:"componentConfigSignal.featureState.enablePriority",visibilityOptions:"componentConfigSignal.featureState.visibilityOptions",priorityOptions:"componentConfigSignal.featureState.priorityOptions",enableAssignment:"componentConfigSignal.featureState.enableAssignment",enableNotifications:"componentConfigSignal.featureState.enableNotifications",enableEdit:"componentConfigSignal.featureState.enableEdit",enableDelete:"componentConfigSignal.featureState.enableDelete",enablePrivateMode:"componentConfigSignal.featureState.enablePrivateMode",deleteThreadWithFirstComment:"componentConfigSignal.featureState.deleteThreadWithFirstComment",seenByUsers:"componentConfigSignal.featureState.seenByUsers",allowAssignment:"componentConfigSignal.featureState.enableAssignment",allowToggleNotification:"componentConfigSignal.featureState.enableNotifications",allowEdit:"componentConfigSignal.featureState.enableEdit",allowChangeCommentAccessMode:"componentConfigSignal.featureState.enablePrivateMode",notificationEnabled:"notificationEnabled",mainCommentId:"componentConfigSignal.data.annotation.comments.0.commentId",commentObj:"commentObj",commentIndex:"commentIndex",userContact:"selectorItem.contact",comment:"commentObj",commentAnnotation:"componentConfigSignal.data.annotation",commentAnnotations:"componentConfigSignal.data.annotations",context:"parentLocalUIState.context",focusedAnnotation:"focusedAnnotation",notification:"notification",notificationsPanel:"notificationsPanel",selectedMinimalFilterDropdownOption:"selectedMinimalFilterDropdownOption",appliedFiltersCount:"appliedFiltersCount",filteredCommentAnnotationsCount:"filteredCommentAnnotationsCount",unreadCommentAnnotationCount:"unreadCommentAnnotationCount"},FWe=["user","annotation","annotations","allAnnotations","userContact","comment","commentAnnotation","commentAnnotations","recorderInitConfig","ghostComment","editComment","assignTo","customChipData","currentDialogView","context","focusedAnnotation","notification","notificationsPanel","selectedMinimalFilterDropdownOption"],I=(()=>{let _DynamicDataService=class _DynamicDataService{constructor(n,o,r,e,t,i){this.authService=n,this.commentService=o,this.loggingService=r,this.injector=e,this.docService=t,this.configService=i,this.subscriptions=[],this.commonData$=new Se({}),this.evaluateConditionTriggered=new Le,this.conditionRegex=/\{(.*?)\}/g,this.extractedProps={},this.condition="",this.dataComponentConfigSignal=Ae({});try{this.subscriptions.push(this.authService.getUser$().subscribe(a=>{this.commonData$.next(k(f({},this.commonData$.value),{user:a}))})),this.subscriptions.push(this.commentService.getUnreadCommentAnnotationCountOnCurrentDocument$().subscribe(a=>{this.commonData$.next(k(f({},this.commonData$.value),{unreadCommentAnnotationCount:a?.count||0}))})),this.subscriptions.push(this.commentService.getUnreadCommentCountOnCurrentDocument$().subscribe(a=>{this.commonData$.next(k(f({},this.commonData$.value),{unreadCommentCount:a?.count||0}))})),this.subscriptions.push(this.docService.getUIState$().subscribe(a=>{this.commonData$.next(f(f({},this.commonData$.value),a))})),this.subscriptions.push(this.getCommonData().subscribe(a=>{this.dataComponentConfigSignal.update(l=>(l=f(f({},l),a),l)),this.executeConditionalClasses()})),this.subscriptions.push(this.evaluateConditionTriggered.subscribe(a=>{this.extractedProps=a.extractedProps,this.evaluateCondition(a.className,a.elementRef,a.condition)}))}catch(a){this.loggingService.catch("Error in DynamicDataService constructor: ",a)}}ngOnDestroy(){try{this.subscriptions.forEach(n=>n.unsubscribe())}catch(n){this.loggingService.catch("Error in DynamicDataService ngOnDestroy: ",n)}}getCommonData(){return this.commonData$.asObservable()}getModifiedPathBasedOnCondition(n,o){try{return Object.keys(o).forEach(r=>{o[r].path=this.modifyPathBasedOnCondition(r,n)}),o}catch(r){this.loggingService.catch("Error in DynamicDataService getModifiedPathBasedOnCondition: ",r)}}getComputedValues(n,o,r,e,t,i){try{Object.keys(r).forEach(a=>{let l;if(lo(n)?l=ce(()=>Cl(n(),r[a].path)):l=ce(()=>Cl(n,r[a].path)),lo(l()))On(()=>{try{let s=l()();r[a].value=s,this.evaluateConditionTriggered.emit({extractedProps:r,className:e,elementRef:t,condition:i})}catch{}},{injector:this.injector,allowSignalWrites:!0});else{let s=l();r[a].value=s,this.evaluateConditionTriggered.emit({extractedProps:r,className:e,elementRef:t,condition:i})}})}catch(a){this.loggingService.catch("Error in DynamicDataService getComputedValues: ",a)}}modifyPathBasedOnCondition(n,o){try{let r=n.match(/^([^\.\[]+)/),e=r?r[1]:n,t=n.slice(e.length);if(Tg[n])return Tg[n];if(["commentDialogOptionsDropdownConfigSignal","commentDialogStatusDropdownConfigSignal"].includes(e)&&t.startsWith(".")){let a=t.slice(1),l=a.match(/^([^\.\[]+)/),s=l?l[1]:a,d=a.slice(s.length);return Tg[s]?Tg[s]+d:"componentConfigSignal."+a}if(e&&o&&typeof o=="function"){let a=o();if(a&&e in a){let s=n.match(/\[(.*?)\]/);if(s&&s[1]){let d=s[1];if(d.includes(".")){let g=d.split(".")[0];if(Tg[g]){let u=d.replace(g,Tg[g]);return n.replace(`[${d}]`,`[${u}]`)}return g&&a&&g in a?n:n.replace(`[${d}]`,`[componentConfigSignal.${d}]`)}}return n}let l=a?.componentConfigSignal;if(l&&typeof l=="function"){let s=l();if(s&&e in s)return"componentConfigSignal."+n}}return Tg[e]?FWe.includes(e)?Tg[e]+t:Tg[e]:"componentConfigSignal."+n}catch(r){return this.loggingService.catch("Error in DynamicDataService modifyPathBasedOnCondition: ",r),n}}applyConditionalClasses(n,o){try{this.elementRef=n,this.data=o}catch(r){this.loggingService.catch("Error in DynamicDataService applyConditionalClasses: ",r)}}executeConditionalClasses(){try{let n=this.getHostElementAttributes(this.elementRef),r=[...Object.keys(n).filter(e=>e.startsWith("velt-class-")).map(e=>({name:e,value:n[e]}))];if(n["velt-class"]){let e=n["velt-class"],t=/'([^']+)':\s*([^,]+)(?:,|$)/g,i=[],a=0,l=100,s;for(;(s=t.exec(e))!==null;){if(a++>l){this.loggingService.catch("Too many class definitions detected.");break}if(s.length<3)continue;let[,d,g]=s;!d||!g||d.split(" ").forEach(u=>{u.trim()&&i.push({name:`velt-class-${u.trim()}`,value:g.trim()})})}r=[...r,...i]}this.data&&typeof this.data=="object"&&Object.keys(this.data).forEach(e=>{this.updateDataComponentConfigSignal(e,this.data[e])}),r.forEach(e=>{let t=e.name.replace("velt-class-","");this.condition=e.value,this.condition&&(this.extractProps(),this.extractedProps=this.getModifiedPathBasedOnCondition(this.dataComponentConfigSignal,this.extractedProps),this.getComputedValues(this.dataComponentConfigSignal,this.evaluateCondition,this.extractedProps,t,this.elementRef,e.value))})}catch(n){this.loggingService.catch("Error in DynamicDataService applyConditionalClasses: ",n)}}updateDataComponentConfigSignal(n,o){try{n==="dataComponentConfigSignal"?this.dataComponentConfigSignal.set(o):this.dataComponentConfigSignal.update(r=>k(f({},r),{[n]:o}))}catch(r){this.loggingService.catch("Error in DataComponent updateDataComponentConfigSignal: ",r)}}extractProps(){try{this.extractedProps={},this.conditionRegex.lastIndex=0;let n;for(;(n=this.conditionRegex.exec(this.condition))!==null;){let o=n[1];this.extractedProps[o]={value:null,path:null,isDynamicPath:this.hasDynamicParts(o)}}}catch(n){this.loggingService.catch("Error in DynamicDataService extractProps: ",n)}}hasDynamicParts(n){try{let o=/\[[^\]'"]*[^\]'"]\]/.test(n),r=/\[[^[\]]*[\.\[][^[\]]*\]/.test(n);return o||r}catch(o){return this.loggingService.catch("Error checking for dynamic path: ",o),!1}}evaluateCondition(n,o,r){try{if(r){let e=this.extractedProps,t=r.replace(this.conditionRegex,(l,s)=>{let d=e[s];if(d&&d.value!==void 0){let g=d.value;return typeof g=="string"?`'${g}'`:typeof g=="boolean"||typeof g=="number"?String(g):g===null?"null":typeof g=="object"?g?"true":"false":String(g)}return"false"}),i=this.sanitizeCondition(t),a=this.safeEval(i);return n&&o&&(a?this.setHostElementClasses(o,n):this.removeHostElementClasses(o,n)),a}return!1}catch(e){return this.loggingService.catch("Error in IfComponent evaluateCondition: ",e),!1}}sanitizeCondition(n){try{return n.replace(/[^a-zA-Z0-9\s\+\-\*\/\%\(\)\!\=\<\>\|\&\.\[\]\{\},'"]/g,"")}catch(o){return this.loggingService.catch("Error in IfComponent sanitizeCondition: ",o),""}}safeEval(expression){try{if(this.configService.getSafeEval()){let n=this.tokenize(expression.trim());return this.evaluateTokens(n)}else return eval(expression)}catch(n){return this.loggingService.catch("safeEval error",n),!1}}tokenize(n){try{if(!n||n.trim()==="")return[];let o=[],r=0;for(;r<n.length;){let e=n[r];if(/\s/.test(e)){r++;continue}if(e==='"'||e==="'"){let t=e,i="";for(r++;r<n.length;)if(n[r]==="\\"&&r+1<n.length)i+=n[r+1],r+=2;else if(n[r]===t){r++;break}else i+=n[r],r++;o.push({type:"string",value:i});continue}if(e==="("){o.push({type:"lparen",value:"("}),r++;continue}if(e===")"){o.push({type:"rparen",value:")"}),r++;continue}if(r<n.length-2&&n.substring(r,r+3)==="==="){o.push({type:"operator",value:"===",precedence:4}),r+=3;continue}if(r<n.length-2&&n.substring(r,r+3)==="!=="){o.push({type:"operator",value:"!==",precedence:4}),r+=3;continue}if(r<n.length-1&&n.substring(r,r+2)==="&&"){o.push({type:"operator",value:"&&",precedence:2}),r+=2;continue}if(r<n.length-1&&n.substring(r,r+2)==="||"){o.push({type:"operator",value:"||",precedence:1}),r+=2;continue}if(r<n.length-1&&n.substring(r,r+2)==="<="){o.push({type:"operator",value:"<=",precedence:4}),r+=2;continue}if(r<n.length-1&&n.substring(r,r+2)===">="){o.push({type:"operator",value:">=",precedence:4}),r+=2;continue}if(r<n.length-1&&n.substring(r,r+2)==="=="){o.push({type:"operator",value:"==",precedence:4}),r+=2;continue}if(r<n.length-1&&n.substring(r,r+2)==="!="){o.push({type:"operator",value:"!=",precedence:4}),r+=2;continue}if(e==="!"){o.push({type:"unary",value:"!",precedence:5}),r++;continue}if(e==="<"){o.push({type:"operator",value:"<",precedence:4}),r++;continue}if(e===">"){o.push({type:"operator",value:">",precedence:4}),r++;continue}if(/[a-zA-Z0-9._]/.test(e)){let t="";for(;r<n.length&&/[a-zA-Z0-9._]/.test(n[r]);)t+=n[r],r++;/^-?\d+(\.\d+)?$/.test(t)?o.push({type:"number",value:parseFloat(t)}):t==="true"||t==="false"?o.push({type:"boolean",value:t==="true"}):t==="null"?o.push({type:"null",value:null}):t==="undefined"?o.push({type:"undefined",value:void 0}):o.push({type:"identifier",value:t});continue}r++}return o}catch(o){return this.loggingService.catch("tokenize error",o),[]}}evaluateTokens(n){try{if(!n||n.length===0)return!1;let o=this.infixToPostfix(n);return this.evaluatePostfix(o)}catch(o){return this.loggingService.catch("evaluateTokens error",o),!1}}infixToPostfix(n){try{let o=[],r=[];for(let e of n)if(e.type==="string"||e.type==="number"||e.type==="boolean"||e.type==="null"||e.type==="undefined"||e.type==="identifier")o.push(e);else if(e.type==="unary")r.push(e);else if(e.type==="operator"){for(;r.length>0;){let t=r[r.length-1];if(t.type==="lparen"||t.precedence!==void 0&&t.precedence<e.precedence)break;o.push(r.pop())}r.push(e)}else if(e.type==="lparen")r.push(e);else if(e.type==="rparen"){for(;r.length>0&&r[r.length-1].type!=="lparen";)o.push(r.pop());r.length>0&&r.pop()}for(;r.length>0;){let e=r.pop();e.type!=="lparen"&&e.type!=="rparen"&&o.push(e)}return o}catch(o){return this.loggingService.catch("infixToPostfix error",o),[]}}evaluatePostfix(n){try{let o=[];for(let r of n)if(r.type==="string"||r.type==="number"||r.type==="boolean"||r.type==="null"||r.type==="undefined"||r.type==="identifier")o.push(r.value);else if(r.type==="unary"){if(o.length>=1){let e=o.pop();r.value==="!"&&o.push(!this.isTruthy(e))}}else if(r.type==="operator"&&o.length>=2){let e=o.pop(),t=o.pop();r.value==="&&"?o.push(this.isTruthy(t)&&this.isTruthy(e)):r.value==="||"?o.push(this.isTruthy(t)||this.isTruthy(e)):o.push(this.compare(t,e,r.value))}return o.length===1?this.isTruthy(o[0]):!1}catch(o){return this.loggingService.catch("evaluatePostfix error",o),!1}}parseValue(n){try{let o=n.trim();return o.startsWith('"')&&o.endsWith('"')||o.startsWith("'")&&o.endsWith("'")?o.substring(1,o.length-1):/^-?\d+(\.\d+)?$/.test(o)?parseFloat(o):o==="true"?!0:o==="false"?!1:o==="null"?null:o==="undefined"?void 0:o}catch(o){return this.loggingService.catch("parseValue error",o),n}}compare(n,o,r){try{switch(r){case"===":return n===o;case"!==":return n!==o;case"==":return n==o;case"!=":return n!=o;case"<":return n<o;case">":return n>o;case"<=":return n<=o;case">=":return n>=o;default:return!1}}catch(e){return this.loggingService.catch("compare error",e),!1}}isTruthy(n){try{return n==null||n===""||n==="false"?!1:n==="true"?!0:typeof n=="number"?n!==0:!!n}catch(o){return this.loggingService.catch("isTruthy error",o),!1}}getHostElementAttributes(n){try{let o=n,r={};for(let e of o.attributes)r[e.name]=e.value;return r}catch{return{}}}setHostElementClasses(n,o){try{n.classList.add(o)}catch{}}removeHostElementClasses(n,o){try{n.classList.remove(o)}catch{}}};_DynamicDataService.\u0275fac=function(o){return new(o||_DynamicDataService)(X(We),X(Pe),X(x),X(Ot),X(ct),X(Ft))},_DynamicDataService.\u0275prov=Me({token:_DynamicDataService,factory:_DynamicDataService.\u0275fac,providedIn:"root"});let DynamicDataService=_DynamicDataService;return DynamicDataService})();var oe=(()=>{let o=class o{set veltIf(e){try{e&&this.setIfCondition(e)}catch(t){this._loggingService.catch("Error in BaseComponent set veltIf:",t)}}constructor(e,t,i){this._elementRef=e,this._dynamicDataService=t,this._loggingService=i,this.componentConfigSignal=Ae({}),this.veltElement=!0,this.conditionSignal=Ae(null)}initializeComponentConfigSignal(e){try{this.componentConfigSignal.set(e)}catch(t){this._loggingService.catch("Error in BaseComponent initializeComponentConfigSignal:",t)}}ngOnInit(){try{this._dynamicDataService.applyConditionalClasses(this._elementRef?.nativeElement,{componentConfigSignal:this.componentConfigSignal})}catch(e){this._loggingService.catch("Error in BaseComponent ngOnInit:",e)}}ngOnDestroy(){}setIfCondition(e){try{this.conditionSignal.set(e)}catch(t){this._loggingService.catch("Error in BaseComponent setIfCondition:",t)}}};o.\u0275fac=function(t){return new(t||o)(y(Z),y(I),y(x))},o.\u0275cmp=O({type:o,selectors:[["app-base"]],hostVars:1,hostBindings:function(t,i){t&2&&T("data-velt-element",i.veltElement)},inputs:{componentConfigSignal:"componentConfigSignal",template:"template",wireframe:"wireframe",veltIf:"veltIf"},standalone:!1,decls:0,vars:0,template:function(t,i){},encapsulation:2});let n=o;return n})();var _t=(()=>{let o=class o{constructor(e,t){this.loggingService=e,this.configService=t,this.darkMode$=new Se(!1)}setDarkMode(e){try{let t=document.documentElement;if(!t)return;e?t.setAttribute(U.ATTRIBUTES.VELT_THEME,"dark"):t.removeAttribute(U.ATTRIBUTES.VELT_THEME),this.darkMode$.next(e)}catch(t){this.loggingService.catch("Error in theme service setDarkMode: ",t)}}getDarkMode$(){return this.darkMode$.asObservable()}updateListenerOnConfigChange(){try{this.configService.getConfig$().subscribe(e=>{if(e&&e.usePrefersColorScheme){this.enablePrefersColorScheme();return}this.disablePrefersColorScheme()})}catch(e){this.loggingService.catch("Error in theme service updateListenerOnConfigChange: ",e)}}enablePrefersColorScheme(){try{if(this.disablePrefersColorScheme(),!window.matchMedia)return;this.darkModeQuery=window.matchMedia("(prefers-color-scheme: dark)"),this.setDarkMode(this.darkModeQuery.matches),this.darkModeQueryListener=e=>{this.setDarkMode(e.matches)},this.darkModeQuery.addEventListener("change",this.darkModeQueryListener)}catch(e){this.loggingService.catch("Error in theme service enablePrefersColorScheme: ",e)}}disablePrefersColorScheme(){try{this.darkModeQuery&&this.darkModeQueryListener&&this.darkModeQuery.removeEventListener("change",this.darkModeQueryListener)}catch(e){this.loggingService.catch("Error in theme service disablePrefersColorScheme: ",e)}}};o.\u0275fac=function(t){return new(t||o)(X(x),X(Ft))},o.\u0275prov=Me({token:o,factory:o.\u0275fac,providedIn:"root"});let n=o;return n})();var wt=(()=>{let o=class o extends oe{onDarkModeChange(){return this.darkModeSubject$.asObservable()}constructor(e,t,i,a,l,s,d){super(e,s,d),this._elementRef=e,this._themeService=t,this._changeDetector=i,this._featureService=a,this._componentDarkModeObservable=l,this._componentDarkMode=null,this._globalDarkMode=!1,this._featureDarkMode=!1,this._themeSubscriptions=[],this._darkMode=!1,this.darkMode=!1,this.darkModeSubject$=new Se(!1);try{this._themeSubscriptions.push(this._themeService.getDarkMode$().subscribe(g=>{this._globalDarkMode=g,this.setDarkMode()})),this._featureService&&(this._featureService instanceof Pe?this._themeSubscriptions.push(this._featureService.getCommentContainerDarkMode().subscribe(g=>{this._featureDarkMode=g,this.setDarkMode()})):this._featureService instanceof Hi&&this._themeSubscriptions.push(this._featureService.getDarkMode$().subscribe(g=>{g!==null&&(this._featureDarkMode=g),this.setDarkMode()}))),this._componentDarkModeObservable&&this._componentDarkModeObservable instanceof Gt&&this._themeSubscriptions.push(this._componentDarkModeObservable.subscribe(g=>{this._componentDarkMode=g,this.setDarkMode()}))}catch{}}ngOnInit(){super.ngOnInit()}ngOnChanges(e){try{if(e._darkMode){let t=e._darkMode.currentValue;typeof t=="string"&&(t=t==="true"),this._componentDarkMode=t,this.setDarkMode()}}catch{}}setComponentDarkMode(e){try{this._componentDarkMode=e,this.setDarkMode()}catch{}}setDarkMode(){try{this._componentDarkMode===null?this._featureDarkMode?this.darkMode=!0:this.darkMode=!!this._globalDarkMode:this.darkMode=!!this._componentDarkMode,this.darkMode?this._elementRef.nativeElement.hasAttribute("dark")||this._elementRef.nativeElement.setAttribute("dark",""):this._elementRef.nativeElement.hasAttribute("dark")&&this._elementRef.nativeElement.removeAttribute("dark"),this.darkModeSubject$.next(this.darkMode),this._changeDetector&&this._changeDetector.markForCheck()}catch{}}ngOnDestroy(){try{super.ngOnDestroy(),this._themeSubscriptions.forEach(e=>{e.unsubscribe()})}catch{}}};o.\u0275fac=function(t){return new(t||o)(y(Z),y(_t),y(Qt),y("FeatureService",8),y(Gt),y(I),y(x))},o.\u0275cmp=O({type:o,selectors:[["app-themed"]],inputs:{_darkMode:[0,"darkMode","_darkMode"]},standalone:!1,features:[P,st],decls:0,vars:0,template:function(t,i){},encapsulation:2,changeDetection:0});let n=o;return n})();var Ze=(()=>{let o=class o{constructor(e){this.loggingService=e,this.wireframeMap=new Se(new Map);try{this.loggingService.log("%c[WB] Creating CLASS: WireframeService","color: blue;")}catch(t){this.loggingService.catch("Error in WireframeService constructor: ",t)}}setWireframe(e,t){try{let i=this.wireframeMap.value,a=i.get(e),l=t.children.length>0||t.innerHTML?.trim()?.length>0,s=a&&(a.children.length>0||a.innerHTML?.trim()?.length>0);(!a||l&&!s)&&(i.set(e,t),this.wireframeMap.next(i))}catch(i){this.loggingService.catch("Error in WireframeService setWireframe: ",i)}}setWireframeMap(e){try{let t=this.wireframeMap.value;e.forEach((i,a)=>{let l=t.get(a),s=i.children.length>0||i.innerHTML?.trim()?.length>0,d=l&&(l.children.length>0||l.innerHTML?.trim()?.length>0);(!l||s&&!d)&&t.set(a,i)}),this.wireframeMap.next(t)}catch(t){this.loggingService.catch("Error in WireframeService setWireframeMap: ",t)}}getWireframe(e,t=!0){try{let i=this.wireframeMap.value,a=i.get(e);if(!a&&t){let l=e?.split("---")[0];l&&(a=i.get(l))}return a&&(a?.children?.length>0||a?.innerHTML?.trim()?.length>0)?a:void 0}catch(i){this.loggingService.catch("Error in WireframeService getWireframe: ",i);return}}getConditionElement(e,t=!0){try{let i=this.wireframeMap.value,a=i.get(e);if(!a&&t){let l=e?.split("---")[0];l&&(a=i.get(l))}return a}catch(i){this.loggingService.catch("Error in WireframeService getConditionElement: ",i);return}}getWireframe$(e,t=!0){return this.wireframeMap.asObservable().pipe(ue(i=>this.getWireframe(e,t)))}setChildren(e){try{this.wireframeMap.next(e)}catch(t){this.loggingService.catch("Error in WireframeService setChildren: ",t)}}getWireframeMap(){return this.wireframeMap.value}};o.\u0275fac=function(t){return new(t||o)(X(x))},o.\u0275prov=Me({token:o,factory:o.\u0275fac,providedIn:"root"});let n=o;return n})();var L_e=n=>({componentConfigSignal:n}),LWe=(n,o)=>({condition:n,data:o}),UWe=(n,o,r,e,t)=>({template:n,context:o,componentName:"velt-confirm-dialog-wireframe",variant:r,setIfCondition:e,componentElementRef:t});function VWe(n,o){if(n&1&&(C(0),D(1,"app-confirm-dialog-title",5)(2,"app-confirm-dialog-message",5),h(3,"div",6),D(4,"app-confirm-dialog-reject",5)(5,"app-confirm-dialog-approve",5),S(),_()),n&2){let r=c(3);m(),v("componentConfigSignal",r.componentConfigSignal),m(),v("componentConfigSignal",r.componentConfigSignal),m(2),v("componentConfigSignal",r.componentConfigSignal),m(),v("componentConfigSignal",r.componentConfigSignal)}}function BWe(n,o){if(n&1&&(C(0),p(1,VWe,6,4,"ng-container",4),_()),n&2){let r=c().ngIf,e=c();m(),v("veltDynamicTemplate",j(3,UWe,e.template,G(1,L_e,e.componentConfigSignal),r==null?null:r.variant,e.setIfCondition.bind(e),e.elementRef))}}function jWe(n,o){if(n&1&&(C(0),p(1,BWe,2,9,"ng-container",3),_()),n&2){let r=c();m(),v("veltIf",w(3,LWe,r.conditionSignal(),G(1,L_e,r.componentConfigSignal)))}}var xl=(()=>{let o=class o extends wt{constructor(e,t,i,a,l,s,d){super(l,a,void 0,void 0,void 0,d,e),this.loggingService=e,this.dialogRef=t,this.wireframeService=i,this.themeService=a,this.elementRef=l,this.dynamicDataService=d,this.subscriptions=[],this.componentConfigSignal=Ae({title:"",message:"",yesButton:"",noButton:"",variant:"",closeDialog:this.closeDialog.bind(this)}),this.componentId="velt-confirm-dialog",this.veltElement=!0;try{s&&(this.componentConfigSignal.update(g=>(g=f(f({},g),s),g)),s?.darkMode&&[!0,!1].includes(s?.darkMode)&&super.setComponentDarkMode(s?.darkMode)),this.setZIndex()}catch(g){this.loggingService.catch("Error in ConfirmDialogComponent constructor: ",g)}}ngOnInit(){try{this.loggingService.log("%c[WB] Calling FUNCTION: ngOnInit","color: green;");let e="velt-confirm-dialog-wireframe";super.ngOnInit(),this.componentConfigSignal()?.variant&&(e+=`---${this.componentConfigSignal()?.variant}`),this.subscriptions.push(this.wireframeService.getWireframe$(e).subscribe(t=>{if(t){let i=document.createElement(t.tagName);i.innerHTML=t.innerHTML,this.template=i}}))}catch(e){this.loggingService.catch("Error in ConfirmDialogComponent OnInit: ",e)}}ngOnDestroy(){super.ngOnDestroy();try{this.subscriptions.forEach(e=>e.unsubscribe())}catch(e){this.loggingService.catch("Error in ConfirmDialogComponent OnDestroy: ",e)}}setZIndex(){try{if(this.dialogRef){let e=this.dialogRef._overlayRef;e&&(e.backdropElement&&(e.backdropElement.style.zIndex="2147483647"),e.hostElement&&(e.hostElement.style.zIndex="2147483647"))}}catch(e){this.loggingService.catch("Error in ConfirmDialogComponent setZIndex: ",e)}}closeDialog(e){try{this.dialogRef.close(e)}catch(t){this.loggingService.catch("Error in ConfirmDialogComponent closeDialog: ",t)}}};o.\u0275fac=function(t){return new(t||o)(y(x),y(Vi),y(Ze),y(_t),y(Z),y(Yc,8),y(I))},o.\u0275cmp=O({type:o,selectors:[["snippyly-confirm-dialog"]],hostVars:1,hostBindings:function(t,i){t&2&&T("data-velt-element",i.veltElement)},standalone:!1,features:[B([I]),P],decls:3,vars:5,consts:[["floatingConfirmationRef",""],[1,"velt-confirm-dialog",3,"snippylyOverlay","snippylyOverlayZIndex","snippylyOverlayBackdropZIndex"],[4,"ngIf"],[4,"veltIf"],[4,"veltDynamicTemplate"],[3,"componentConfigSignal"],["mat-dialog-actions","",1,"velt-confirm-dialog-actions"]],template:function(t,i){if(t&1&&(h(0,"div",1,0),p(2,jWe,2,6,"ng-container",2),S()),t&2){let a=Ie(1);v("snippylyOverlay",a)("snippylyOverlayZIndex",1200)("snippylyOverlayBackdropZIndex",1100),T("data-testid",i.componentId),m(2),v("ngIf",i.componentConfigSignal())}},styles:["html[_ngcontent-%COMP%]{--velt-base-rem-unit: 1}*[data-snippyly-element=true][_ngcontent-%COMP%], *[data-velt-element=true][_ngcontent-%COMP%]{font-family:var(--velt-default-font-family)}velt-wireframe[_ngcontent-%COMP%]{display:none!important}[_nghost-%COMP%] *[_ngcontent-%COMP%]{outline:0}[_nghost-%COMP%]{--velt-green: var(--velt-light-mode-green);--velt-magenta: var(--velt-light-mode-magenta);--velt-amber: var(--velt-light-mode-amber);--velt-purple: var(--velt-light-mode-purple);--velt-cyan: var(--velt-light-mode-cyan);--velt-orange: var(--velt-light-mode-orange);--velt-black: var(--velt-light-mode-black);--velt-white: var(--velt-light-mode-white);--velt-gray: var(--velt-light-mode-gray);--velt-error: var(--velt-light-mode-error);--velt-error-hover: var(--velt-light-mode-error-hover);--velt-error-foreground: var(--velt-light-mode-error-foreground);--velt-error-light: var(--velt-light-mode-error-light);--velt-error-transparent: var(--velt-light-mode-error-transparent);--velt-warning: var(--velt-light-mode-warning);--velt-warning-hover: var(--velt-light-mode-warning-hover);--velt-warning-foreground: var(--velt-light-mode-warning-foreground);--velt-warning-light: var(--velt-light-mode-warning-light);--velt-warning-transparent: var(--velt-light-mode-warning-transparent);--velt-success: var(--velt-light-mode-success);--velt-success-hover: var(--velt-light-mode-success-hover);--velt-success-foreground: var(--velt-light-mode-success-foreground);--velt-success-light: var(--velt-light-mode-success-light);--velt-success-transparent: var(--velt-light-mode-success-transparent);--velt-accent: var(--velt-light-mode-accent);--velt-accent-text: var(--velt-light-mode-accent-text);--velt-accent-hover: var(--velt-light-mode-accent-hover);--velt-accent-foreground: var(--velt-light-mode-accent-foreground);--velt-accent-light: var(--velt-light-mode-accent-light);--velt-accent-transparent: var(--velt-light-mode-accent-transparent);--velt-text-0: var(--velt-light-mode-text-0);--velt-text-1: var(--velt-light-mode-text-1);--velt-text-2: var(--velt-light-mode-text-2);--velt-text-3: var(--velt-light-mode-text-3);--velt-text-4: var(--velt-light-mode-text-4);--velt-text-5: var(--velt-light-mode-text-5);--velt-text-6: var(--velt-light-mode-text-6);--velt-text-7: var(--velt-light-mode-text-7);--velt-text-8: var(--velt-light-mode-text-8);--velt-text-9: var(--velt-light-mode-text-9);--velt-text-10: var(--velt-light-mode-text-10);--velt-text-11: var(--velt-light-mode-text-11);--velt-text-12: var(--velt-light-mode-text-12);--velt-background-0: var(--velt-light-mode-background-0);--velt-background-1: var(--velt-light-mode-background-1);--velt-background-2: var(--velt-light-mode-background-2);--velt-background-3: var(--velt-light-mode-background-3);--velt-background-4: var(--velt-light-mode-background-4);--velt-background-5: var(--velt-light-mode-background-5);--velt-background-6: var(--velt-light-mode-background-6);--velt-background-7: var(--velt-light-mode-background-7);--velt-background-8: var(--velt-light-mode-background-8);--velt-background-9: var(--velt-light-mode-background-9);--velt-background-10: var(--velt-light-mode-background-10);--velt-border-0: var(--velt-light-mode-border-0);--velt-border-1: var(--velt-light-mode-border-1);--velt-border-2: var(--velt-light-mode-border-2);--velt-border-3: var(--velt-light-mode-border-3);--velt-border-4: var(--velt-light-mode-border-4);--velt-border-5: var(--velt-light-mode-border-5);--velt-border-6: var(--velt-light-mode-border-6);--velt-border-7: var(--velt-light-mode-border-7);--velt-border-8: var(--velt-light-mode-border-8);--velt-border-9: var(--velt-light-mode-border-9);--velt-border-10: var(--velt-light-mode-border-10);--velt-background-transparent: var(--velt-light-mode-background-transparent);--velt-border-transparent: var(--velt-light-mode-border-transparent);--velt-animation-transparent: var(--velt-light-mode-animation-transparent)}[dark][_nghost-%COMP%]{--velt-green: var(--velt-dark-mode-green);--velt-magenta: var(--velt-dark-mode-magenta);--velt-amber: var(--velt-dark-mode-amber);--velt-purple: var(--velt-dark-mode-purple);--velt-cyan: var(--velt-dark-mode-cyan);--velt-orange: var(--velt-dark-mode-orange);--velt-black: var(--velt-dark-mode-black);--velt-white: var(--velt-dark-mode-white);--velt-gray: var(--velt-dark-mode-gray);--velt-error: var(--velt-dark-mode-error);--velt-error-hover: var(--velt-dark-mode-error-hover);--velt-error-foreground: var(--velt-dark-mode-error-foreground);--velt-error-light: var(--velt-dark-mode-error-light);--velt-error-transparent: var(--velt-dark-mode-error-transparent);--velt-warning: var(--velt-dark-mode-warning);--velt-warning-hover: var(--velt-dark-mode-warning-hover);--velt-warning-foreground: var(--velt-dark-mode-warning-foreground);--velt-warning-light: var(--velt-dark-mode-warning-light);--velt-warning-transparent: var(--velt-dark-mode-warning-transparent);--velt-success: var(--velt-dark-mode-success);--velt-success-hover: var(--velt-dark-mode-success-hover);--velt-success-foreground: var(--velt-dark-mode-success-foreground);--velt-success-light: var(--velt-dark-mode-success-light);--velt-success-transparent: var(--velt-dark-mode-success-transparent);--velt-accent: var(--velt-dark-mode-accent);--velt-accent-text: var(--velt-dark-mode-accent-text);--velt-accent-hover: var(--velt-dark-mode-accent-hover);--velt-accent-foreground: var(--velt-dark-mode-accent-foreground);--velt-accent-light: var(--velt-dark-mode-accent-light);--velt-accent-transparent: var(--velt-dark-mode-accent-transparent);--velt-text-0: var(--velt-dark-mode-text-0);--velt-text-1: var(--velt-dark-mode-text-1);--velt-text-2: var(--velt-dark-mode-text-2);--velt-text-3: var(--velt-dark-mode-text-3);--velt-text-4: var(--velt-dark-mode-text-4);--velt-text-5: var(--velt-dark-mode-text-5);--velt-text-6: var(--velt-dark-mode-text-6);--velt-text-7: var(--velt-dark-mode-text-7);--velt-text-8: var(--velt-dark-mode-text-8);--velt-text-9: var(--velt-dark-mode-text-9);--velt-text-10: var(--velt-dark-mode-text-10);--velt-text-11: var(--velt-dark-mode-text-11);--velt-text-12: var(--velt-dark-mode-text-12);--velt-background-0: var(--velt-dark-mode-background-0);--velt-background-1: var(--velt-dark-mode-background-1);--velt-background-2: var(--velt-dark-mode-background-2);--velt-background-3: var(--velt-dark-mode-background-3);--velt-background-4: var(--velt-dark-mode-background-4);--velt-background-5: var(--velt-dark-mode-background-5);--velt-background-6: var(--velt-dark-mode-background-6);--velt-background-7: var(--velt-dark-mode-background-7);--velt-background-8: var(--velt-dark-mode-background-8);--velt-background-9: var(--velt-dark-mode-background-9);--velt-background-10: var(--velt-dark-mode-background-10);--velt-border-0: var(--velt-dark-mode-border-0);--velt-border-1: var(--velt-dark-mode-border-1);--velt-border-2: var(--velt-dark-mode-border-2);--velt-border-3: var(--velt-dark-mode-border-3);--velt-border-4: var(--velt-dark-mode-border-4);--velt-border-5: var(--velt-dark-mode-border-5);--velt-border-6: var(--velt-dark-mode-border-6);--velt-border-7: var(--velt-dark-mode-border-7);--velt-border-8: var(--velt-dark-mode-border-8);--velt-border-9: var(--velt-dark-mode-border-9);--velt-border-10: var(--velt-dark-mode-border-10);--velt-background-transparent: var(--velt-dark-mode-background-transparent);--velt-border-transparent: var(--velt-dark-mode-border-transparent);--velt-animation-transparent: var(--velt-dark-mode-animation-transparent)}.velt-confirm-dialog[_ngcontent-%COMP%]{width:455px;padding:40px;display:block;box-sizing:border-box;background-color:var(--velt-background-0)}.velt-confirm-dialog-actions[_ngcontent-%COMP%]{justify-content:space-between;gap:var(--velt-spacing-md);min-height:auto} .velt-mat-dialog-container mat-dialog-container .mat-mdc-dialog-surface.mdc-dialog__surface:has(snippyly-confirm-dialog){border-radius:var(--velt-border-radius-xl);padding:0}@media (max-width: 768px){.velt-confirm-dialog[_ngcontent-%COMP%]{width:auto;max-width:455px;padding:24px}}"],changeDetection:0});let n=o;return n})();var xn=(()=>{let o=class o{constructor(e,t,i,a,l,s,d,g,u,b,E,A,M,V,q,ae,fe,ie,Ce){this.afAuth=e,this.analyticsService=t,this.authService=i,this.configService=a,this.commonDbService=l,this.commonDbUtilsService=s,this.commentUtilsService=d,this.commentAnnotationsResolverService=g,this.notificationResolverService=u,this.databaseService=b,this.docService=E,this.domService=A,this.iamService=M,this.loggingService=V,this.notificationUtilsService=q,this.usersService=ae,this.functions=fe,this.userPermissionService=ie,this.coreActionsService=Ce,this.db=null,this.notificationsDb=null,this.documentPaths=null,this.notifications$=new Se([]),this.rawNotificationsByIdMap$=new Se(new Map),this.processedNotifications$=new Se([]),this.userNotificationsFromServer$=new Se(null),this.readNotificationsOnForYouTab$=new Se(!1),this.currentDocumentOnly$=new Se(!1),this.notificationViews$=new Se({}),this.notificationsByIdMap$=new Se(new Map),this.historyPanelVisible$=new Se(!1),this.notificationsForYou$=new Se(null),this.notificationsByDocumentIdMap$=new Se(null),this.notificationsByDocumentIdSubscription={},this.allowedDocumentMetadataMap$=new Se(null),this.maxNotificationDays$=new Se(15),this.tabConfig$=new Se({people:{enable:!1}}),this.settingsConfig$=new Se(null),this.setSettingsConfigByOrganization$=new Se(!1),this.muteAllNotifications$=new Se(!1),this.enableSettings$=new Se(!1),this.selfNotifications$=new Se(!1),this.settingsInitialConfig$=new Se([{name:"Inbox",id:"inbox",default:"ALL",enable:!0,values:[{name:"All",id:"ALL"},{name:"Only Involved",id:"MINE"},{name:"None",id:"NONE"}]},{name:"Email",id:"email",default:"MINE",enable:!0,values:[{name:"All",id:"ALL"},{name:"Only Involved",id:"MINE"},{name:"None",id:"NONE"}]}]),this.settingsConfigGeneration=0,this.notificationsPanelVisible$=new Se(!1);try{this.subscribeNotificationsData().subscribe(),this.commentUtilsService.setNotificationService(this),this.databaseService.getDb().pipe($e(xe=>!!xe),ut(1)).subscribe(xe=>{if(xe){this.db=xe;try{let ke=this.configService.getProxyConfig(),ye=En.firebaseNotificationsDatabaseURL;ke?.v1DbHost&&ye&&(ye=kN(ye,ke.v1DbHost)),this.notificationsDb=x1(void 0,ye),ke?.v1DbHost&&ye&&this.databaseService.lockDatabaseHost(this.notificationsDb)}catch(ke){this.loggingService.catch("Error initializing notifications DB, using default: ",ke),this.notificationsDb=xe}this.getDocumentIds(),this.subscribeGetNotificationsForYou()}},xe=>{this.loggingService.catch("Error in NotificationService getDb subscription: ",xe)}),this.authService.getUser$().subscribe(xe=>{xe?(this.subscribeGetNotificationsForYou(),this.getDocumentIds(),this.subscribeToUserSettings()):(Object.keys(this.notificationsByDocumentIdSubscription).forEach(ke=>{this.notificationsByDocumentIdSubscription[ke]?.unsubscribe()}),this.notificationForYouSubscription?.unsubscribe(),this.documentIdsSubscription?.unsubscribe(),this.resetCacheData())}),this.docService.getLocationMetadata$().subscribe(xe=>{if(xe){let ke=this.notificationsByDocumentIdMap$.getValue()?JSON.parse(JSON.stringify(this.notificationsByDocumentIdMap$.getValue())):null;Object.keys(xe||{}).forEach(ye=>{let Oe=ke?.[ye]?.notifications;Oe?.length&&Oe.forEach(Ne=>{this.notificationUtilsService.mergeLocationWithNotification({notification:Ne},xe)?.notification})}),this.notificationsByDocumentIdMap$.next(ke)}})}catch(xe){this.loggingService.catch("Error in NotificationService constructor: ",xe)}}setDBConfigDataToInitialConfig(e){try{let t=JSON.parse(JSON.stringify(this.settingsConfig$.getValue()??{}));Object.entries(e||{}).forEach(([i,a])=>{t[i]=a}),this.settingsConfig$.next(t)}catch(t){this.loggingService.catch("Error in NotificationService setDBConfigDataToInitialConfig: ",t)}}getInitialConfigFromDB(e){return Q(this,null,function*(){try{this.loggingService.log("%c[WB] Calling NotificationService FUNCTION: getInitialConfigFromDB","color: green;");let t=++this.settingsConfigGeneration,i=It(this.authService.getUser()?.userId??""),a=yield this.commonDbService.getData({feature:"userConfig",properties:{useCollectionGroup:!1,isCollection:!1,documentId:this.getSettingsConfigByOrganization()?void 0:e?.documentId,organizationId:e?.organizationId??this.docService.getOrganizationConfig()?.organizationId,userId:i}});if(t!==this.settingsConfigGeneration)return;if(a?.notificationsConfig)this.setDBConfigDataToInitialConfig(a?.notificationsConfig);else{this.setSettingsInitialConfig(this.settingsInitialConfig$.getValue());let l={};this.settingsInitialConfig$.getValue().forEach(d=>{if(d.enable){let g=d?.values?.find(u=>u.id===d.default);l[d.id]=g||d?.values?.[0]||{id:"NONE",name:"None"}}});let s={};Object.keys(l).forEach(d=>{s[d]=l[d].id}),yield this.updateSettingsConfigToDb(s)}}catch(t){this.loggingService.catch("Error in NotificationService getInitialConfigFromDB: ",t)}})}subscribeToUserSettings(){try{this.loggingService.log("%c[WB] Calling NotificationService FUNCTION: subscribeToUserSettings","color: green;"),this.userSettingsSubscription&&this.userSettingsSubscription.unsubscribe();let e=It(this.authService.getUser()?.userId??"");this.userSettingsSubscription=this.enableSettings$.pipe($e(t=>t===!0),_e(()=>pn([this.docService.getDocumentPaths$(),this.getSettingsConfigByOrganization$(),this.docService.getOrganizationConfig$()]).pipe($e(([t,i,a])=>(i||!!t)&&!!a?.organizationId),_e(([t,i,a])=>po(this.getInitialConfigFromDB(t)).pipe(_e(()=>this.commonDbService.dbListener({feature:"userConfig",properties:{useCollectionGroup:!1,isCollection:!1,documentId:i?void 0:t?.documentId,organizationId:t?.organizationId??a?.organizationId,userId:e}}).pipe(ue(l=>{l?.data?.notificationsConfig&&!Mr(l?.data?.notificationsConfig??{},this.settingsConfig$.getValue()??{})&&this.setDBConfigDataToInitialConfig(l?.data?.notificationsConfig)})))))))).subscribe()}catch(e){this.loggingService.catch("Error in NotificationService subscribeToUserSettings: ",e)}}resetCacheData(){try{this.loggingService.log("%c[WB] Calling NotificationService FUNCTION: resetCacheData","color: green;"),this.setUserNotificationsFromServer(null),this.notificationsByDocumentIdMap$.next(null),this.notificationsForYou$.next(null),this.settingsConfig$.next(null)}catch(e){this.loggingService.catch("Error in NotificationService resetCacheData: ",e)}}subscribeGetNotificationsForYou(){try{this.notificationForYouSubscription&&this.notificationForYouSubscription.unsubscribe(),this.notificationForYouSubscription=this.getNotificationsForYou().subscribe(()=>{},e=>{this.loggingService.catch("Error in NotificationService getNotificationsForYou subscription: ",e)})}catch(e){this.loggingService.catch("Error in NotificationService subscriveGetNotificationsForYou: ",e)}}setCommentService(e){try{this.commentService=e}catch(t){this.loggingService.catch("Error in NotificationService setCommentService: ",t)}}getDocumentIds(){try{this.documentIdsSubscription&&this.documentIdsSubscription.unsubscribe(),this.documentIdsSubscription=this.selfNotifications$.pipe(_e(()=>this.getCurrentDocumentOnly$().pipe(_e(e=>e?this.docService.getDocumentPaths$().pipe(ue(t=>{})):le(void 0)))),on(()=>{this.notificationsByDocumentIdMap$.next(null)}),_e(()=>this.getDocumentIdsByLastNotificationTimestamp().pipe(Nr(),ue(([e,t])=>{let i=e?.map(g=>g.documentId),a=t?.map(g=>g.documentId),l=i?.filter(g=>!a?.includes(g)),s=a?.map(g=>({documentId:g,timestamp:t?.find(u=>u.documentId===g)?.timestamp})).filter(g=>!i?.includes(g.documentId)),d=a?.map(g=>{let u=t?.find(b=>b.documentId===g)?.timestamp;return{documentId:g,timestamp:u}}).filter(g=>{let u=e?.find(b=>b.documentId===g.documentId)?.timestamp;return u&&g.timestamp&&u!==g.timestamp});s?.length&&this.fetchNotificationsForDocumentIds(s),d?.length&&this.fetchNotificationsForDocumentIds(d,1),l?.forEach(g=>{this.removeNotificationsForDocumentId(g)}),t&&!t?.length&&!this.notificationsByDocumentIdMap$.getValue()&&(this.notificationsByDocumentIdMap$.next({}),this.setUserNotificationsFromServer([]))})))).subscribe(()=>{},e=>{this.loggingService.catch("Error in NotificationService getDocumentIds subscription: ",e)})}catch(e){this.loggingService.catch("Error in NotificationService getDocumentIds: ",e)}}getDocumentIdsByLastNotificationTimestamp(e=15){try{return this.authService.getUser$().pipe(_e(t=>this.docService.getOrganizationConfig$().pipe(ue(i=>{let a=null,l=this.configService.getApiKey(),s=i?.organizationId||t?.organizationId;return l&&s&&(a=new dv({apiKey:l,organizationId:s})),{user:t,documentPaths:a}}))),_e(t=>{let{user:i,documentPaths:a}=t;if(this.getCurrentDocumentOnly()&&!this.docService?.getDocumentPaths()?.documentId)return le(null);if(i&&a?.organizationNotificationsLastNotificationTimestamp){let l=new Date,s=this.maxNotificationDays$.getValue()>0?this.maxNotificationDays$.getValue():15;l.setDate(l.getDate()-s);let d=l.getTime(),g=[_r(ft("timestamp",">=",d),...this.getCurrentDocumentOnly()&&this.docService.getDocumentPaths()?.documentId?[ft("metadata.documentId","==",this.docService.getDocumentPaths()?.documentId)]:[])];return this.getCurrentDocumentOnly()||(g.push(vo("timestamp","desc")),g.push(lv(e))),this.commonDbService.dbListener({feature:"allLastNotificationTimestamp",properties:{organizationId:a?.organizationId,isCollection:!0,useQuery:!0,firestoreQuery:g}}).pipe(ue(u=>u?.data),ue(u=>{let b=[];return Object.keys(u||{}).forEach(E=>{let A=this.commonDbService.shouldUseFirestore()?u[E]?.timestamp??0:u[E],M=this.commonDbService.shouldUseFirestore()?u[E]?.deletedNotification??!1:!1;if(M&&M.id&&M?.timestamp===A){let V=M.id,q=u[E]?.metadata?.documentId,ae=JSON.parse(JSON.stringify(this.notificationsByDocumentIdMap$.getValue()??{})),fe=ae?.[q]??{documentMetadata:null,notifications:[]},ie=fe.notifications??[],Ce=ie?.findIndex(xe=>xe.id===V);Ce!==-1&&(ie.splice(Ce,1),this.notificationsByDocumentIdMap$.next(k(f({},ae),{[q]:k(f({},fe),{notifications:ie})}))),this.notificationResolverService.notificationDataProviderAvailable()&&this.notificationResolverService.getNotificationById(V)&&this.notificationResolverService.deleteNotification(V,this.docService.getDocumentPaths()?.clientOrganizationId??"")}b.push({documentId:E,timestamp:A})}),b}),Jn(u=>(this.loggingService.catch("Error in NotificationService getDocumentIdsByLastNotificationTimestamp: ",u),le([]))))}return le(null)}))}catch(t){return this.loggingService.catch("Error in NotificationService getDocumentIdsByLastNotificationTimestamp: ",t),le([])}}resolveAndUpdateDocumentNotifications(e,t){try{Object.keys(e).forEach(i=>{let a=e[i]?.documentMetadata||{},l;if(t==="user")l=this.commonDbUtilsService.mergeUsersWithData({feature:"allDocNotifications",data:e[i]?.notifications||[]});else if(t==="notification"){let s=e[i]?.notifications?.reduce((g,u)=>(g[u.notificationId]=u,g),{}),d=this.commonDbUtilsService.mergeNotificationsWithResolvedData({feature:"allDocNotifications",data:s});l=Object.values(d??{})}else{let s=e[i]?.notifications?.reduce((g,u)=>(g[u.notificationId]=u,g),{}),d=this.commonDbUtilsService.mergeCommentAnnotationsWithData({feature:"allDocNotifications",data:s});l=Object.values(d??{})}l.forEach(s=>{s.notification=this.getClientNotificationObject(s)}),this.setNotificationForDocumentIdInCache(i,a,l)})}catch(i){this.loggingService.catch("Error in NotificationService resolveAndUpdateDocumentNotifications: ",i)}}resolveAndMergeUserNotifications(e,t,i=!1){try{let a=e;if(i&&t==="comment"){let u=this.getUserNotificationsFromServer()??[],b=new Set(e.map(E=>E.notificationId));a=u.filter(E=>b.has(E.notificationId)).concat(e.filter(E=>!u.some(A=>A.notificationId===E.notificationId)))}let l=a.reduce((u,b)=>(u[b.notificationId]=b,u),{}),s;if(t==="user"){let u=this.commonDbUtilsService.mergeUsersWithData({feature:"allUserNotifications",data:l});s=Object.values(u??{})}else if(t==="notification"){let u=this.commonDbUtilsService.mergeNotificationsWithResolvedData({feature:"allUserNotifications",data:l});s=Object.values(u??{})}else{let u=this.commonDbUtilsService.mergeCommentAnnotationsWithData({feature:"allUserNotifications",data:l});s=Object.values(u??{})}s.forEach(u=>{u.notification=this.getClientNotificationObject(u)});let d=this.getUserNotificationsFromServer()??[],g=new Map(d.map(u=>[u.notificationId,u]));s.forEach(u=>{g.set(u.notificationId,u)}),this.setUserNotificationsFromServer(Array.from(g.values()))}catch(a){this.loggingService.catch("Error in NotificationService resolveAndMergeUserNotifications: ",a)}}fetchNotificationsForDocumentIds(e,t=15){return Q(this,null,function*(){try{if(e?.length){let i=Gr(this.functions,Wr({url:En.cloudFunction.getNotificationsForDocuments,apiProxyDomain:this.configService?.getApiProxyDomain()}),{timeout:12e5}),a=this.docService.getOrganizationConfig()?.organizationId??"";if(!a)return[];let l=this.getStartAtTimestamp(),s={};if(e.forEach(ie=>{if(ie?.documentId){let Ce=this.getAllowedDocumentMetadataByDocumentId(ie.documentId);Ce&&(s[ie.documentId]=Ce)}}),this.userPermissionService?.isPermissionProviderAvailable())try{let ie=[];if(e.forEach(Oe=>{this.docService.getDocumentMetadata(Oe.documentId)||ie.push(Oe.documentId)}),ie.length){let Oe=this.authService.getUser(),Ne=Gr(this.functions,Wr({url:En?.cloudFunction?.sdkProxy,apiProxyDomain:this.configService?.getApiProxyDomain()}));try{let Ue=yield _l({methodName:"getDocumentMetadataFromIds",data:{type:"getDocumentMetadataFromIds",metadata:{organizationId:Oe?.clientOrganizationId,folderId:this.documentPaths?.folderId},documentIds:ie},getSdkProxy:Ne,userId:Oe?.userId??""});if(Ue?.data?.length){let ze={};Ue.data.forEach(Ge=>{Ge?.documentId&&(ze[Ge.documentId]=Ge)}),this.docService.setAllDocumentMetadata(f(f({},this.docService.getAllDocumentMetadataMap()),ze))}}catch(Ue){this.loggingService.warn("Error in NotificationService fetchNotificationsForDocumentIds: ",Ue)}}let Ce=[],xe=[];e.forEach(Oe=>{let Ne=this.docService.getDocumentMetadata(Oe.documentId);Ne?.clientDocumentId?Ce.push({userId:this.authService.getUser()?.userId??"",resource:{id:Ne.clientDocumentId,type:oa.DOCUMENT,source:ro.GET_NOTIFICATIONS,organizationId:this.docService.getOrganizationConfig()?.clientOrganizationId??""}}):xe.push(Oe.documentId)}),xe.length&&(e=e.filter(Oe=>!xe.includes(Oe.documentId)));let ke=ot();this.coreActionsService.triggerAction(Qe.PERMISSION_PROVIDER,{event:K.Events.PermissionProvider.RESOURCE_ACCESS_REQUEST_FORMED,timestamp:new Date().getTime(),uniqueId:ke,methodName:ro.GET_NOTIFICATIONS,source:"internal",payload:{requests:Ce}});let ye=yield this.userPermissionService?.onResourceAccessRequired({requests:Ce,uniqueId:ke,methodName:ro.GET_NOTIFICATIONS});ye?.success&&ye?.data?.length?ye.data.forEach(Oe=>{!Oe.hasAccess&&Oe.resourceId&&(e=e.filter(Ne=>Ne.documentId!==mi(Oe.resourceId)))}):e=[]}catch(ie){this.loggingService.warn("Error in NotificationService fetchNotificationsForDocumentIds: ",ie),e=[]}if(!e.length)return[];let d=this.userPermissionService?.getPermissionsCache()?.filter(ie=>ie.type===oa.CONTEXT),g={organizationId:a,documentIds:e.filter(ie=>!!ie.documentId&&!!ie.timestamp).map(ie=>({documentId:ie.documentId,timestamp:ie.timestamp??0})),timestamp:l,limitToLast:t,selfNotifications:this.selfNotifications$.value,isPermissionProviderUsed:this.userPermissionService?.isPermissionProviderAvailable(),getUserNotifications:!0,isContextEnabled:this.userPermissionService?.getIsContextEnabled(),cachedData:d,isSettingsConfigByOrganization:this.getSettingsConfigByOrganization(),retryConfig:this.userPermissionService?.getPermissionProviderRetryConfig()},u=yield this.notificationUtilsService.handleNotificationEncryption({data:g}),b=yield i({veltData:u}),E=b?.data?.data?.veltData||{},A=b?.data?.data?.veltAdditionalData||{},M="notificationwithdocumentidstoencryptanddecryptonsdk"+(this.authService.getUser()?.userId??""),V=yield Q1(E,M),{userNotifications:q=[],userNotificationIdsInDocNotifications:ae=[],permissionResults:fe=[]}=yield Q1(A,M);if(this.userPermissionService?.getIsContextEnabled()){let ie=[...this.userPermissionService?.getPermissionsCache()??[],...fe??[]];this.userPermissionService?.setPermissionsCache(ie)}if(V&&typeof V=="object"){let ie=this.usersService.userDataProviderAvailable(),Ce=this.commentAnnotationsResolverService.commentAnnotationDataProviderAvailable(),xe=this.notificationResolverService.notificationDataProviderAvailable(),ke=[],ye=[],Oe=[];Object.keys(V).forEach((ze,Ge)=>{let $r=V[ze].documentMetadata;if($r){let Tt=this.allowedDocumentMetadataMap$.value||{};(!Tt?.[ze]||!Mr(Tt?.[ze],$r))&&this.allowedDocumentMetadataMap$.next(k(f({},Tt),{[ze]:$r}))}let et=V[ze].notifications||[];et.forEach(Tt=>{ae.includes(Tt.notificationId)&&!q.find(Xe=>Xe.notificationId===Tt.notificationId)&&q.push(JSON.parse(JSON.stringify(Tt))),Tt.notification=this.getClientNotificationObject(Tt)}),this.setNotificationForDocumentIdInCache(ze,$r,et),ie&&(ke.push(this.commonDbUtilsService.formatResponse({feature:"allDocNotifications",data:et,shouldAwait:!0,forceResolve:!0})),ke.push(this.commonDbUtilsService.formatResponse({feature:"allUserNotifications",data:q,shouldAwait:!0,forceResolve:!0}))),Ce&&(ye.push(this.commonDbUtilsService.formatResponse({feature:"allDocNotifications",data:et,shouldCommentAnnotationsResolverAwait:!0})),ye.push(this.commonDbUtilsService.formatResponse({feature:"allUserNotifications",data:q,shouldCommentAnnotationsResolverAwait:!0}))),xe&&(Oe.push(this.commonDbUtilsService.formatResponse({feature:"allDocNotifications",data:et,shouldNotificationResolverAwait:!0})),Oe.push(this.commonDbUtilsService.formatResponse({feature:"allUserNotifications",data:q,shouldNotificationResolverAwait:!0})))});let Ne=JSON.parse(JSON.stringify(q));this.setUserNotificationsFromServer([...this.getUserNotificationsFromServer()??[],...q]),(xe||ie||Ce)&&(()=>{let ze=Promise.resolve();if(xe&&(ze=ze.then(()=>Promise.allSettled(Oe)).then(()=>{this.resolveAndUpdateDocumentNotifications(V,"notification"),this.resolveAndMergeUserNotifications(Ne,"notification")})),ie&&(ze=ze.then(()=>Promise.allSettled(ke)).then(()=>{this.resolveAndUpdateDocumentNotifications(V,"user"),this.resolveAndMergeUserNotifications(Ne,"user")})),Ce){let Ge=xe||ie;ze=ze.then(()=>Promise.allSettled(ye)).then(()=>{this.resolveAndUpdateDocumentNotifications(V,"comment"),this.resolveAndMergeUserNotifications(Ne,"comment",Ge)})}return ze})().catch(ze=>{this.loggingService.catch("Error in NotificationService resolveChain: ",ze)})}}}catch(i){return this.loggingService.catch("Error in NotificationService fetchNotificationsForDocumentIds: ",i),[]}})}getUserNotificationsFromServer$(){return this.userNotificationsFromServer$.asObservable()}setUserNotificationsFromServer(e){try{let t=JSON.parse(JSON.stringify(e));t=t?.filter((i,a,l)=>a===l.findIndex(s=>s.notificationId===i.notificationId)),this.userNotificationsFromServer$.next(t)}catch(t){this.loggingService.catch("Error in NotificationService setUserNotificationsFromServer: ",t)}}getUserNotificationsFromServer(){return this.userNotificationsFromServer$.getValue()}setNotificationForDocumentIdInCache(e,t,i,a){try{let l=this.docService.getOrganizationConfig()?.organizationId??"",s=this.docService.getOrganizationMetadata(l);t||(t=JSON.parse(JSON.stringify(this.docService.getDocumentMetadata()||{}))),s||(s=JSON.parse(JSON.stringify(this.docService.getOrganizationMetadata(l)||{})));let d=this.notificationsByDocumentIdMap$.getValue(),g=d?.[e]?.notifications||[],u=this.docService.getLocationMetadatas(),b=i?.map(M=>{let V=M?.notification;return V?(V.metadata&&(V.metadata.documentName=t?.documentName||V.metadata.documentName,V.metadata.organizationMetadata=s||V.metadata.organizationMetadata,V.metadata.documentMetadata=t||V.metadata.documentMetadata),u&&(V=this.notificationUtilsService.mergeLocationWithNotification({notification:V},u)?.notification),V):null})?.filter(M=>!!M)||[],E=new Map(g.map(M=>[M.id,M]));b.forEach(M=>{E.set(M.id,M)});let A=Array.from(E.values()).sort((M,V)=>(V.timestamp||0)-(M.timestamp||0));this.notificationsByDocumentIdMap$.next(k(f({},d),{[e]:{notifications:A,documentMetadata:t}}))}catch(l){this.loggingService.catch("Error in NotificationService setNotificationForDocumentIdInCache: ",l)}}removeNotificationsForDocumentId(e){try{this.notificationsByDocumentIdSubscription[e]&&this.notificationsByDocumentIdSubscription[e].unsubscribe();let t=this.notificationsByDocumentIdMap$.getValue();delete t?.[e],this.notificationsByDocumentIdMap$.next(t)}catch(t){this.loggingService.catch("Error in NotificationService removeNotificationsForDocumentId: ",t)}}getStartAtTimestamp(){try{let e=new Date,t=this.maxNotificationDays$.getValue()>0?this.maxNotificationDays$.getValue():15;return e.setDate(e.getDate()-t),e.getTime()}catch(e){return this.loggingService.catch("Error in NotificationService getStartAtTimestamp: ",e),0}}getNotificationsForYou(){try{return this.getUserNotificationsFromServer$().pipe(_e(e=>le(e).pipe($e(t=>!!t),ue(t=>{let i=this.usersService.userDataProviderAvailable(),a=this.commentAnnotationsResolverService?.commentAnnotationDataProviderAvailable(),l=this.notificationResolverService?.notificationDataProviderAvailable();if(l||i||a){let d=t?.reduce((g,u)=>(g[u.notificationId]=u,g),{});l&&(d=this.commonDbUtilsService.mergeNotificationsWithResolvedData({feature:"allUserNotifications",data:d||[]})),i&&(d=this.commonDbUtilsService.mergeUsersWithData({feature:"allUserNotifications",data:d||[]})),a&&(d=this.commonDbUtilsService.mergeCommentAnnotationsWithData({feature:"allUserNotifications",data:d||[]})),t=Object.values(d??{})}return t.forEach(d=>{d.notification=this.getClientNotificationObject(d)}),t.sort((d,g)=>g.timestamp-d.timestamp),t.map(d=>d.notification).filter(d=>!!d)}),_e(t=>{let i={data:t?.reduce((a,l)=>(a[l.id]={notification:l},a),{}),operation:null};return this.commonDbUtilsService.mergeLocationMetadataWithData$({data:i,feature:"allUserNotifications"}).pipe(ue(a=>Object.values(a?.data||{}).map(l=>l?.notification)))}))),_e(e=>{let t=this.docService.getOrganizationConfig()?.organizationId??"";return this.docService.getOrganizationMetadata$(t).pipe(ue(()=>e))}),_e(e=>this.allowedDocumentMetadataMap$.pipe(ue(()=>e))),ue(e=>(e?.length&&(e=e.map(t=>{if(t?.metadata){let i=this.docService.getOrganizationConfig()?.organizationId??"",a=this.getAllowedDocumentMetadataByDocumentId(t.metadata.documentId),l=this.docService.getOrganizationMetadata(i);a||(a=JSON.parse(JSON.stringify(this.docService.getDocumentMetadata()||{}))),l||(l=JSON.parse(JSON.stringify(this.docService.getOrganizationMetadata(i)||{}))),t.metadata.documentName=a?.documentName||t.metadata.documentName,t.metadata.organizationMetadata=l||t.metadata.organizationMetadata,t.metadata.documentMetadata=a||t.metadata.documentMetadata}return t})),e===null?this.notificationsForYou$.next(null):e?.length?this.notificationsForYou$.next(JSON.parse(JSON.stringify(e))):this.notificationsForYou$.next([]),le(e))))}catch(e){return this.loggingService.catch("Error in NotificationService getNotificationsForYou: ",e),le({})}}subscribeNotificationsData(e,t){this.loggingService.log("%c[WB] Calling FUNCTION: subscribeViewsData","color: green;");let i,a;try{if(e&&(a=Qn(e)),t&&typeof t=="object"){let l=Oi(t);i=Qn(JSON.stringify(l))}}catch(l){this.loggingService.catch("Error in ViewsService subscribeViewsData: ",l)}return fr(this.afAuth).pipe($e(l=>!!l),_e(l=>this.isFeatureAllowed({firebaseUser:l})),_e(l=>l.featureAllowed?this.iamService.isUserAllowed$().pipe(ue(s=>(l.featureAllowed=s,l))):le(l)),_e(l=>!l.featureAllowed||l?.user?.organizationId?(this.notifications$.next([]),this.rawNotificationsByIdMap$.next(new Map),this.processedNotifications$.next([]),this.notificationsByIdMap$.next(new Map),this.notificationViews$.next({}),this.setNotificationsByIdMap(),le([])):le(l).pipe(_e(s=>this.docService.getDocumentPaths$().pipe(ue(d=>(this.documentPaths=d,s.documentPaths=d,s)))),_e(s=>this.getDataFromDocumentId(a)))))}isFeatureAllowed(e){return this.configService.getConfig$().pipe($e(t=>!!t),ue(t=>k(f({},e),{config:t})),_e(t=>this.authService.getUser$().pipe(ue(i=>k(f({},t),{user:i})))),_e(t=>Ao(t.config,t.user,je.NOTIFICATION)?le(k(f({},t),{featureAllowed:!0})):(this.loggingService.warn("Notification feature is not allowed."),le(k(f({},t),{featureAllowed:!1})))))}getDataFromDocumentId(e){return this.databaseService.getDb().pipe($e(t=>!!t),_e(t=>{if(this.db=t,this.loggingService.log(this.db),this.configService?.getApiKey()&&this.documentPaths?.views){let i=`${this.configService.getApiKey()}`;this.documentPaths?.organizationId&&(i+=`/${U.FIREBASE_PARTIAL_PATH_ORGANIZATIONS}/${this.documentPaths.organizationId}`);let a=Ur(this.db,`${e?i+"/"+U.FIREBASE_PARTIAL_PATH_DOCS+"/"+e+"/"+U.FIREBASE_PARTIAL_PATH_VIEWS+"/":this.documentPaths?.notifications}`);return f8(a).pipe(Jn(l=>(this.loggingService.catch("Error in NotificationService getDataFromDocumentId: ",l),le(null))),ue(l=>{let s=[],d=new Map;l?.raw&&(Object.keys(l?.raw||{}).forEach(u=>{let b=l?.raw[u];b?.id&&s.push(b)}),s.forEach(u=>{u.id&&d.set(u.id,u)})),this.notifications$.next(s),this.rawNotificationsByIdMap$.next(d);let g=[];l?.processed&&Object.keys(l?.processed||{}).forEach(u=>{let b=l?.processed[u];b?.id&&g.push(b)}),this.processedNotifications$.next(g),this.setNotificationsByIdMap()}))}else return le(null)}))}setNotificationsByIdMap(){try{let e=this.authService.getUser();if(e){let t=this.notificationViews$.getValue(),i;e?.email&&(i=It(e?.email));let a;e?.userId&&(a=It(e?.userId));let l=new Map;this.processedNotifications$.getValue().forEach(d=>{if(d.id&&d?.displayHeadlineMessageTemplate){let g=!1;(i&&d.notifyUsers?.[i]||a&&d.notifyUsers?.[a])&&(g=!0);let u={id:d.id,notificationSource:d.notificationSource,actionType:d.actionType,actionUser:d.actionUser,timestamp:d.timestamp,targetAnnotationId:d.targetAnnotationId,displayHeadlineMessage:this.getNotificationHeadlineMessage(d),displayBodyMessage:this.getNotificationBodyMessage(d),forYou:g,notificationSourceData:d.notificationSourceData},b=this.getRawNotificationById(u.id);if(b?.metadata&&(u.metadata={apiKey:b.metadata.apiKey,organizationId:b.metadata.organizationId,clientOrganizationId:b.metadata.clientOrganizationId,documentId:b.metadata.documentId,clientDocumentId:b.metadata.clientDocumentId,location:b?.location,locationId:b?.locationId}),u?.notificationSource==="comment"&&u?.targetAnnotationId){let E=this.commentService?.getAnnotationById(u.targetAnnotationId);E||b?.annotationData&&(E=b.annotationData),E&&(u.notificationSourceData=this.commentService?.getCommentAnnotationForClient(E))}l.set(d.id,u)}}),l.forEach((d,g)=>{d.isUnread=d?.actionUser?.userSnippylyId!==e?.userSnippylyId&&!t?.notification?.[g]?.views?.[e?.userSnippylyId],l.set(g,d)}),this.notificationsByIdMap$.next(l)}}catch(e){this.loggingService.catch("Error in NotificationService setNotificationsByIdMap: ",e)}}getClientNotificationObject({processed:e,raw:t,metadata:i,views:a,notification:l}){try{let s=this.authService.getUser(),d=l||e;if(d.id&&d?.displayHeadlineMessageTemplate&&s){let g=null;s?.email&&(g=It(s?.email));let u=null;s?.userId&&(u=It(s?.userId));let b=!1,E=!0;(g&&d.notifyUsers?.[g]||u&&d.notifyUsersByUserId?.[u])&&(b=!0),u&&a?.[u]&&(E=!1);let A={id:d.id};if(l?A=k(f(f({},A),l),{displayHeadlineMessage:this.getNotificationHeadlineMessage(l),displayBodyMessage:this.getNotificationBodyMessage(l),forYou:b,isUnread:E}):A={id:e.id,notificationSource:e.notificationSource,actionType:e.actionType,actionUser:e.actionUser,timestamp:e.timestamp,targetAnnotationId:e.targetAnnotationId,displayHeadlineMessage:this.getNotificationHeadlineMessage(e),displayBodyMessage:this.getNotificationBodyMessage(e),forYou:b,isUnread:E,metadata:i},A?.notificationSource==="comment"&&A?.targetAnnotationId){let M=this.commentService?.getAnnotationById(A.targetAnnotationId);M||l?.notificationSourceData&&(M=l?.notificationSourceData),M||t?.annotationData&&(M=t.annotationData),M&&(A.notificationSourceData=this.commentService?.getCommentAnnotationForClient(M))}return t?.targetAnnotationData?.isCommentResolverUsed&&(A.isCommentResolverUsed=t?.targetAnnotationData?.isCommentResolverUsed),l?.isNotificationResolverUsed&&(A.isNotificationResolverUsed=l.isNotificationResolverUsed),A}return}catch(s){this.loggingService.catch("Error in NotificationService getClientNotificationObject: ",s);return}}getNotificationsForYou$(){return this.notificationsForYou$.asObservable()}getNotificationsByDocumentId$(){return this.notificationsByDocumentIdMap$.asObservable().pipe(ue(e=>e?Object.keys(e??{}).map(t=>{let i=e[t].notifications||[],a=i.filter(s=>s.isUnread).length,l=i.length>0&&i[0]?.timestamp||0;return{documentId:t,notifications:e[t]?.notifications,unreadNotificationsCount:a,latestNotificationTimestamp:l,documentMetadata:e[t]?.documentMetadata}}).filter(t=>t.notifications?.length>0).sort((t,i)=>i.latestNotificationTimestamp-t.latestNotificationTimestamp):null))}getAllNotifications$(){return this.getNotificationsByDocumentId$().pipe(ue(e=>{let t=null;return e?(t=[],e.forEach(i=>{i.notifications.forEach(a=>{t?.push(a)})}),t?.sort((i,a)=>a.timestamp-i.timestamp)):null}))}processNotificationData(e){try{let t=e?.annotationData?.metadata,i=this.docService.getOrganizationConfig()?.organizationId;e.metadata=JSON.parse(JSON.stringify(this.docService.getDocumentMetadata(t?.documentId)||{})),e.metadata||(e.metadata={},this.loggingService.catch("Warning in NotificationService updateNotificationDatabase: ","Document metadata not found")),delete e.metadata.locations,e.metadata.documentMetadata=JSON.parse(JSON.stringify(this.docService.getDocumentMetadata(t?.documentId)||{})),e?.metadata?.documentMetadata?.clientDocumentId&&e?.metadata?.documentMetadata?.documentId&&(e.metadata.documentMetadata.documentId=e?.metadata?.documentMetadata?.clientDocumentId),delete e.metadata.documentMetadata.locations,e.metadata.organizationMetadata=JSON.parse(JSON.stringify(i?this.docService.getOrganizationMetadata(i)||{}:{})),e?.metadata?.organizationMetadata?.clientOrganizationId&&e?.metadata?.organizationMetadata?.organizationId&&(e.metadata.organizationMetadata.organizationId=e?.metadata?.organizationMetadata?.clientOrganizationId);let a=this.configService.getApiKey();e.metadata.apiKey=a,e.platform=this.configService.getSF()?"sf":"sdk",e.actionUser=this.authService.getUser();let l=t?.documentId?new dv({apiKey:a,documentId:t.documentId,organizationId:t?.organizationId}):this.docService.getDocumentPaths();e?.actionUser?.organizationId&&(e.metadata.organizationId=l?.organizationId||e.actionUser.organizationId,e.metadata.clientOrganizationId=l?.clientOrganizationId||e.actionUser.clientOrganizationId);let s=this.docService.getLocation();s&&(e.location=s?.location,e.locationId=s?.locationId),this.loggingService.log(`[NOTIFICATION] ${e?.notificationSource} ${e?.actionType}`,e);let d=this.commonDbService.getServerTimestamp(),g=this.notificationUtilsService.formatNotification(e,d);return JSON.parse(JSON.stringify(g))}catch(t){return this.loggingService.catch("Error in NotificationService processNotificationData: ",t),null}}updateNotificationDatabase(e){try{if(!this.notificationsDb)return;let t=Ur(this.notificationsDb),i=this.processNotificationData(e);s8(t,JSON.parse(JSON.stringify(i)))}catch(t){this.loggingService.catch("Error in NotificationService updateNotificationDatabase: ",t)}}getRawNotifications$(){return this.notifications$.asObservable()}getProcessedNotifications$(){return this.processedNotifications$.asObservable()}getNotifications$(e){return this.authService.getUser$().pipe(_e(t=>t?t.organizationId?this.getAllNotifications$().pipe(_e(i=>this.notificationsForYou$.pipe(ue(a=>{if(i||a){let l=new Map;return(!e?.type||["all","documents"].includes(e.type))&&(i||[]).forEach(s=>{s.id&&l.set(s.id,s)}),(!e?.type||["all","forYou"].includes(e.type))&&(a||[]).forEach(s=>{s.id&&!l.has(s.id)&&l.set(s.id,s)}),Array.from(l.values()).sort((s,d)=>(d.timestamp||0)-(s.timestamp||0))}else return null})))):this.notificationsByIdMap$.asObservable().pipe(ue(i=>Array.from(i.values())),ue(i=>i.sort((a,l)=>l.timestamp-a.timestamp)),Vh()):le(null)),xt(Jt))}getRawNotificationById(e){try{return this.rawNotificationsByIdMap$.getValue()?.get(e)}catch(t){this.loggingService.catch("Error in NotificationService getRawNotificationById: ",t);return}}setNotificationViews(e){try{this.notificationViews$.next(e),this.setNotificationsByIdMap()}catch(t){this.loggingService.catch("Error in NotificationService setNotificationViews: ",t)}}getNotificationHeadlineMessage(e){try{let t=this.authService.getUser();if(e?.displayHeadlineMessageTemplate&&e?.displayHeadlineMessageTemplateData){let i=e.displayHeadlineMessageTemplate,a=e.displayHeadlineMessageTemplateData,l=/\{(\w+)\}/g,s=i.replace(l,(d,g)=>(g==="actionUser"||g==="recipientUser")&&a[g]?t?.email&&a[g].email===t?.email||t?.userId&&a[g]?.userId===t?.userId?"You":a[g].name||a[g].email||' <velt-skeleton-loader width="50px" height="20px" border-radius="4px"></velt-skeleton-loader> ':a[g]?a[g]:d);return this.domService.sanitizeHtml(s)}return this.domService.sanitizeHtml(e.displayHeadlineMessageTemplate||"")}catch(t){return this.loggingService.catch("Error in NotificationService getNotificationHeadlineMessage: ",t),""}}getNotificationBodyMessage(e){try{if(e?.displayBodyMessageTemplate&&e?.displayBodyMessageTemplateData){let t=e?.displayBodyMessageTemplate;return e?.displayBodyMessageTemplateData&&e?.displayBodyMessageTemplateData?.users?.forEach(i=>{if(i?.userId){let a=this.usersService.getUserById(i?.userId);t=t?.replaceAll(`{{${i.userId}}}`,a?.name||a?.email||'<velt-skeleton-loader width="50px" height="20px" border-radius="4px"></velt-skeleton-loader>'),t=t?.replaceAll(`@User ${i.userId}`,a?.name||a?.email||'<velt-skeleton-loader width="50px" height="20px" border-radius="4px"></velt-skeleton-loader>')}}),this.domService.sanitizeHtml(t)}return this.domService.sanitizeHtml(e.displayBodyMessage||"")}catch(t){return this.loggingService.catch("Error in NotificationService getNotificationBodyMessage: ",t),""}}setHistoryPanelVisibility(e,t=!1,i=!1){try{e?document.querySelector(U.TAGS.VELT_NOTIFICATIONS_HISTORY_PANEL)?this.historyPanelVisible$.next(e):this.loggingService.catch("Error in NotificationService setHistoryPanelVisibility: ",`<${U.TAGS.VELT_NOTIFICATIONS_HISTORY_PANEL}> tag is not added.`):this.historyPanelVisible$.next(e),e?this.analyticsService.trackEvent(K.Events.Notifications.NOTIFICATION_HISTORY_PANEL_OPENED):this.analyticsService.trackEvent(K.Events.Notifications.NOTIFICATION_HISTORY_PANEL_CLOSED)}catch{this.loggingService.catch("Error in NotificationService setHistoryPanelVisibility: ",`<${U.TAGS.VELT_NOTIFICATIONS_HISTORY_PANEL}> tag is not added.`)}}toggleHistoryPanelVisibility(e=!1,t=!1){try{this.historyPanelVisible$.value?this.historyPanelVisible$.next(!this.historyPanelVisible$.value):document.querySelector(U.TAGS.VELT_NOTIFICATIONS_HISTORY_PANEL)?(this.historyPanelVisible$.next(!this.historyPanelVisible$.value),this.historyPanelVisible$.value?this.analyticsService.trackEvent(K.Events.Notifications.NOTIFICATION_HISTORY_PANEL_TOGGLED,{action:"closed"}):this.analyticsService.trackEvent(K.Events.Notifications.NOTIFICATION_HISTORY_PANEL_TOGGLED,{action:"opened"})):this.loggingService.catch("Error in NotificationService toggleHistoryPanelVisibility: ",`<${U.TAGS.VELT_NOTIFICATIONS_HISTORY_PANEL}> tag is not added.`)}catch{this.loggingService.catch("Error in NotificationService toggleHistoryPanelVisibility: ",`<${U.TAGS.VELT_NOTIFICATIONS_HISTORY_PANEL}> tag is not added.`)}}getHistoryPanelVisibility$(){return this.historyPanelVisible$.asObservable()}setNotificationsAsRead(e){return Q(this,null,function*(){try{let t=JSON.parse(JSON.stringify(this.getUserNotificationsFromServer()??[]));if(e?.length){for(let s=0;s<e.length;s+=50){let g=e.slice(s,s+50).filter(E=>E?.id),u=g.map(E=>this.setNotificationAsRead({notification:E,userNotifications:JSON.parse(JSON.stringify(t))})),b=yield Promise.all(u);g.forEach((E,A)=>{let M=b[A];if(!M.some(q=>q.notificationId===E.id))t=t.filter(q=>q.notificationId!==E.id);else{let q=t.find(fe=>fe.notificationId===E.id),ae=M.find(fe=>fe.notificationId===E.id);q&&ae?.views&&(q.views=ae.views)}})}let a=JSON.parse(JSON.stringify(this.notificationsByDocumentIdMap$.getValue()||{}));e.forEach(s=>{let d=s.metadata?.documentId;if(d&&a?.[d]){let g=a?.[d]?.notifications||[],u=g.find(b=>b.id===s.id);u&&(u.isUnread=!1),a[d].notifications=g}}),this.notificationsByDocumentIdMap$.next(a),!Mr(t,this.getUserNotificationsFromServer())&&this.setUserNotificationsFromServer(t)}}catch(t){this.loggingService.catch("Error in NotificationService setNotificationsAsRead: ",t)}})}setAllNotificationsAsRead(e){return Q(this,null,function*(){try{if(e?.tabId==="for-you"){let t=this.notificationsForYou$.value||[];this.setNotificationsAsRead(t)}else this.getNotifications$().pipe(ut(1)).subscribe(t=>{t&&this.setNotificationsAsRead(t)})}catch(t){this.loggingService.catch("Error in NotificationService setAllNotificationsAsRead: ",t)}})}getUnreadNotificationsCount$(){try{return this.notificationsForYou$.pipe(ue(e=>e?.filter(i=>i?.isUnread)?.length??null),_e(e=>this.getNotifications$().pipe(ue(t=>{let i=t?.filter(a=>a?.isUnread)?.length??null;return{forYou:e,all:i}}))))}catch(e){return this.loggingService.catch("Error in NotificationService getUnreadNotificationsCount$: ",e),le({forYou:null,all:null})}}setNotificationAsRead(i){return Q(this,arguments,function*({notification:e,userNotifications:t}){try{let a=this.authService.getUser();if(a&&e?.id){let l=It(a?.userId),{metadata:s}=e;if(s){let{apiKey:d,organizationId:g,documentId:u}=s;if(d&&g&&u&&l){let b=yield this.commonDbService.getData({feature:"docNotification",properties:{id:e.id,organizationId:g,documentId:u,apiKey:d}});b?.notificationId&&(b?.views?.[l]||(b.views||(b.views={}),b.views[l]={timestamp:Date.now()},this.commonDbService.updateData({feature:"docNotificationViews",properties:{id:e.id,organizationId:g,documentId:u,apiKey:d},data:b})));let E=yield this.commonDbService.getData({feature:"userNotification",properties:{id:e.id,userId:l,documentId:u,organizationId:g}});if(E?.notificationId){if(!this.getReadNotificationsOnForYouTab())yield this.commonDbService.deleteData({feature:"userNotification",properties:{id:e.id,userId:l,documentId:u,organizationId:g}}),t=t.filter(A=>A.notificationId!==e.id);else if(!E?.views?.[l]){E.views||(E.views={}),E.views[l]={timestamp:Date.now()};let A=t.find(M=>M.notificationId===e.id);A&&(A.views=E.views),this.commonDbService.updateData({feature:"userNotificationViews",properties:{id:e.id,userId:l,documentId:u,organizationId:g},data:E})}}}}}return t}catch(a){return this.loggingService.catch("Error in NotificationService setNotificationAsRead: ",a),t}})}setMaxDays(e){try{e>0?this.maxNotificationDays$.next(e):this.maxNotificationDays$.next(15)}catch(t){this.loggingService.catch("Error in NotificationService setMaxDays: ",t)}}setTabConfig(e){try{e&&this.tabConfig$.next(e)}catch(t){this.loggingService.catch("Error in NotificationService setTabConfig: ",t)}}getTabConfig$(){return this.tabConfig$.asObservable()}getTabConfig(){return this.tabConfig$.value}enableReadNotificationsOnForYouTab(){this.readNotificationsOnForYouTab$.next(!0)}disableReadNotificationsOnForYouTab(){this.readNotificationsOnForYouTab$.next(!1)}getReadNotificationsOnForYouTab$(){return this.readNotificationsOnForYouTab$.asObservable()}getReadNotificationsOnForYouTab(){return this.readNotificationsOnForYouTab$.value}enableCurrentDocumentOnly(){try{if(this.currentDocumentOnly$.value===!0)return;this.currentDocumentOnly$.next(!0)}catch(e){this.loggingService.catch("Error in NotificationService enableCurrentDocumentOnly: ",e)}}disableCurrentDocumentOnly(){try{if(this.currentDocumentOnly$.value===!1)return;this.currentDocumentOnly$.next(!1)}catch(e){this.loggingService.catch("Error in NotificationService disableCurrentDocumentOnly: ",e)}}getCurrentDocumentOnly$(){return this.currentDocumentOnly$.asObservable()}getCurrentDocumentOnly(){return this.currentDocumentOnly$.value}markNotificationAsReadById(e){return Q(this,null,function*(){try{this.getNotifications$().pipe(ut(1)).subscribe(t=>{if(t){let i=t.filter(a=>a.id===e);this.setNotificationsAsRead(i)}})}catch(t){this.loggingService.catch("Error in NotificationService markNotificationAsReadById: ",t)}})}getAllowedDocumentMetadataByDocumentId(e){try{return this.allowedDocumentMetadataMap$.value?.[e]||null}catch(t){return this.loggingService.catch("Error in NotificationService getAllowedDocumentMetadataByDocumentId: ",t),null}}setSettingsConfig(e){try{this.enableSettings$.value&&this.settingsConfig$.next(e)}catch(t){this.loggingService.catch("Error in NotificationService setSettingsConfig: ",t)}}setSettingsConfigWithDB(e){try{this.enableSettings$.value&&(this.settingsConfig$.next(e),this.updateSettingsConfigToDb())}catch(t){this.loggingService.catch("Error in NotificationService setSettingsConfigWithDB: ",t)}}getSettingsConfig$(){return this.settingsConfig$.asObservable()}getSettingsConfig(){return this.settingsConfig$.value}setMuteAllNotifications(){try{this.muteAllNotifications$.value!==!0&&this.muteAllNotifications$.next(!0)}catch(e){this.loggingService.catch("Error in NotificationService setSettingsMuteAll: ",e)}}getMuteAllNotifications$(){return this.muteAllNotifications$.asObservable()}getMuteAllNotifications(){return this.muteAllNotifications$.value}enableSettings(){try{this.enableSettings$.value!==!0&&this.enableSettings$.next(!0)}catch(e){this.loggingService.catch("Error in NotificationService enableSettings: ",e)}}enableSettingsConfigByOrganization(){try{this.getSettingsConfigByOrganization()!==!0&&this.setSettingsConfigByOrganization$.next(!0)}catch(e){this.loggingService.catch("Error in NotificationService enableSettingsConfigByOrganization: ",e)}}disableSettingsConfigByOrganization(){try{this.getSettingsConfigByOrganization()!==!1&&this.setSettingsConfigByOrganization$.next(!1)}catch(e){this.loggingService.catch("Error in NotificationService disableSettingsConfigByOrganization: ",e)}}getSettingsConfigByOrganization$(){return this.setSettingsConfigByOrganization$.asObservable()}getSettingsConfigByOrganization(){return this.setSettingsConfigByOrganization$.value}enableSelfNotifications(){try{this.selfNotifications$.value!==!0&&this.selfNotifications$.next(!0)}catch(e){this.loggingService.catch("Error in NotificationService enableSelfNotifications: ",e)}}disableSelfNotifications(){try{this.selfNotifications$.value!==!1&&this.selfNotifications$.next(!1)}catch(e){this.loggingService.catch("Error in NotificationService disableSelfNotifications: ",e)}}disableSettings(){try{this.enableSettings$.value!==!1&&this.enableSettings$.next(!1)}catch(e){this.loggingService.catch("Error in NotificationService disableSettings: ",e)}}getEnableSettings$(){return this.enableSettings$.asObservable()}getEnableSettings(){return this.enableSettings$.value}setSettingsInitialConfig(e){try{let t=!1;if(e.forEach(i=>{["email","inbox"].includes(i.id)&&(t=!i.values?.every(a=>["ALL","NONE","MINE"].includes(a.id)))}),t){this.loggingService.catch("Invalid config values for email or inbox, It should have only ALL, NONE, MINE values");return}this.settingsInitialConfig$.next(e)}catch(t){this.loggingService.catch("Error in NotificationService setSettingsInitialConfig: ",t)}}getSettingsInitialConfig$(){return this.settingsInitialConfig$.asObservable()}getSettingsInitialConfig(){return this.settingsInitialConfig$.value}updateSettingsConfigToDb(e){return Q(this,null,function*(){try{let t=this.authService.getUser(),i=It(t?.userId??""),a=this.docService.getDocumentPaths(),l=this.docService.getOrganizationConfig(),s=a?.organizationId??l?.organizationId,d=a?.clientOrganizationId??l?.clientOrganizationId,g={apiKey:this.configService.getApiKey(),organizationId:s,documentId:a?.documentId,clientOrganizationId:d,clientDocumentId:a?.clientDocumentId,userId:i,clientUserId:this.authService.getUser()?.userId};i&&this.getEnableSettings()&&this.enableSettings$.value&&(this.getSettingsConfigByOrganization()?this.docService.addUserInfoToOrganization({organizationId:d??t?.clientOrganizationId??"",user:{userId:t?.userId??""},notificationsConfig:e||this.settingsConfig$.getValue()}):a?.documentId&&(yield this.commonDbService.updateData({feature:"userConfig",properties:{documentId:a?.documentId,userId:i},data:{id:a?.documentId,notificationsConfig:e||this.settingsConfig$.getValue(),metadata:g}})))}catch(t){this.loggingService.catch("Error in NotificationService updateSettingsConfigToDb: ",t)}})}openNotificationsPanel(){try{this.notificationsPanelVisible$.next(!0)}catch(e){this.loggingService.catch("Error in NotificationService openNotificationsPanel: ",e)}}closeNotificationsPanel(){try{this.notificationsPanelVisible$.next(!1)}catch(e){this.loggingService.catch("Error in NotificationService closeNotificationsPanel: ",e)}}getNotificationsPanelVisible$(){return this.notificationsPanelVisible$.asObservable()}getNotificationsPanelVisible(){return this.notificationsPanelVisible$.value}};o.\u0275fac=function(t){return new(t||o)(X(eo),X(lt),X(We),X(Ft),X(Tn),X(rd),X(cv),X(rl),X(mv),X($n),X(ct),X(Be),X(Ln),X(x),X(LL),X(An),X(Do),X(il),X(tr))},o.\u0275prov=Me({token:o,factory:o.\u0275fac,providedIn:"root"});let n=o;return n})();var lm=(()=>{let o=class o{constructor(e,t,i,a,l,s,d,g,u,b,E,A,M){this.analyticsService=e,this.configService=t,this.docService=i,this.databaseService=a,this.commonDbService=l,this.authService=s,this.domService=d,this.afAuth=g,this.iamService=u,this.dialog=b,this.loggingService=E,this.notificationService=A,this.userPermissionService=M,this.areaAnnotationById$=new Se({}),this.documentPaths=null,this.areaEnabled$=new Se(!0),this.allowedElementIds$=new Se([]),this.addAreaMode$=new Se(!1),this.loggingService.log("%c[WB] Creating CLASS: AreaService","color: blue;"),this.analyticsService.setAreaService(this),this.authService.setAreaService(this),this.databaseService.getDb().pipe($e(V=>!!V),ut(1)).subscribe(V=>{V&&this.getDocumentPaths()},V=>{this.loggingService.catch("Error in AreaService getDb subscription: ",V)}),this.domService.onWindowPointerMove$().subscribe(V=>{if(this.addAreaMode$.value){this.highlightElement&&this.domService.removeHighlightFromElement(this.highlightElement);let q=this.domService.getBackgroundElement(V.clientX,V.clientY);q&&(this.isElementInsideAllowedElements(q)?wN(V.target)?this.domService.removeClassFromElement(document.body,"show-pin-cursor"):(this.domService.addClassToElement(document.body,"show-pin-cursor"),this.highlightElement=q,this.domService.highlightElement(this.highlightElement,U.CURSOR.AREA_PIN)):this.domService.removeClassFromElement(document.body,"show-pin-cursor"))}},V=>{this.loggingService.catch("Error in AreaService onWindowPointerMove$ subscription: ",V)}),this.domService.onWindowKeyupEsc$().subscribe(V=>{this.addAreaMode$.value&&this.disableAddAreaMode()},V=>{this.loggingService.catch("Error in AreaService onWindowKeyupEsc$ subscription: ",V)}),this.domService.onDocumentClick$().subscribe(V=>{if(V&&this.addAreaMode$.value){if(V.preventDefault(),V.stopPropagation(),!wN(V.target)){let q=this.domService.getBackgroundElement(V.clientX,V.clientY);q&&this.isElementInsideAllowedElements(q)&&this.addArea(V)}this.disableAddAreaMode()}},V=>{this.loggingService.catch("Error in AreaService onDocumentClick$ subscription: ",V)}),this.addAreaMode$.subscribe(V=>{this.highlightElement&&this.domService.removeHighlightFromElement(this.highlightElement),V?this.domService.addClassToElement(document.body,"snippyly-add-area-mode"):(this.domService.removeClassFromElement(document.body,"snippyly-add-area-mode"),this.domService.removeClassFromElement(document.body,"show-pin-cursor"))},V=>{this.loggingService.catch("Error in AreaService addAreaMode$ subscription: ",V)}),this.domService.onWindowKeyupBackspace$().subscribe(V=>{this.deleteAreaPinAnnotations("keyupBackspace")},V=>{this.loggingService.catch("Error in AreaService onWindowKeyupBackspace$ subscription: ",V)}),this.domService.onWindowKeyupDelete$().subscribe(V=>{this.deleteAreaPinAnnotations("keyupDelete")},V=>{this.loggingService.catch("Error in AreaService onWindowKeyupDelete$ subscription: ",V)})}clearCache(){this.loggingService.log("%c[WB] Calling FUNCTION: clearCache in AreaService","color: green;");try{this.areaAnnotationById$.next({}),this.areaEnabled$.next(!0),this.allowedElementIds$.next([]),this.addAreaMode$.next(!1),this.highlightElement=null}catch(e){this.loggingService.catch("Error in AreaService clearCache: ",e)}}getDocumentPaths(){this.loggingService.log("%c[WB] Calling FUNCTION: getDocumentPaths","color: green;"),this.docService.getDocumentPaths$()}setAllowedElementIds(e){this.allowedElementIds$.next(e||[])}getAllowedElementIds(){return this.allowedElementIds$.asObservable()}getAllAreaAnnotations(e,t,i){this.loggingService.log("%c[WB] Calling FUNCTION: getAllAreaAnnotations","color: green;");let a,l;try{if(e&&(l=Qn(e)),t&&typeof t=="object"){let s=Oi(t);a=Qn(JSON.stringify(s))}}catch(s){this.loggingService.catch("Error in AreaService getAllAreaAnnotations: ",s)}return fr(this.afAuth).pipe($e(s=>!!s),_e(s=>this.isFeatureAllowed({firebaseUser:s,annotations:[],filteredAnnotations:[]})),_e(s=>s.featureAllowed?this.iamService.isUserAllowed$().pipe(ue(d=>(s.featureAllowed=d,s))):le(s)),_e(s=>s.featureAllowed?this.authService.isPlanExpired$().pipe(ue(d=>(s.featureAllowed=!d,s))):le(s)),_e(s=>s.featureAllowed?le(s).pipe(_e(d=>this.docService.getDocumentPaths$().pipe(ue(g=>(this.documentPaths=g,d.documentPaths=g,d)))),_e(d=>l?this.getDataFromDocumentIds([l]).pipe(ue(g=>(d.annotations=g||[],f({},d)))):this.docService.getDocumentIds$().pipe(_e(g=>{let u=g?.length>0?g.map(b=>b.documentId):[this.documentPaths?.documentId??""];return this.getDataFromDocumentIds(u).pipe(ue(b=>(d.annotations=b||[],f({},d))))}))),_e(d=>this.docService.getLocation$().pipe(ue(g=>(d.location=g,d)))),_e(d=>this.docService.getLocations$().pipe(ue(g=>(d.customLocations=g,d)))),ue(d=>{if(d.filteredAnnotations=[],l&&!a)return d.filteredAnnotations=d.annotations?.slice(),d;{let g=[],u=[];return a?g.push(a):(g.push(d?.location?.locationId),g.push(...Object.values(d?.customLocations||[]).map(b=>b.locationId)),d?.location?.location?.id&&u.push(d?.location?.location?.id)),d.filteredAnnotations=this.filterAnnotationsByLocationIds(d?.annotations,g,u),d}}),_e(d=>i?le(d):d?.annotations?.length?this.domService.onWindowResize$().pipe(ue(()=>d)):le(d)),_e(d=>i?le(d):d?.annotations?.length?this.domService.onDomChange$("AreaService getAllAreaAnnotations").pipe(ue(()=>d)):le(d)),ue(d=>(d.filteredAnnotations=d.filteredAnnotations?.map(g=>{let u=Object.assign({},g);return u.areaProperties=this.calculateAreaAnnotationPosition(u),u}),d)),_e(d=>d?.filteredAnnotations?le(d?.filteredAnnotations||[]):le([])),_e(d=>{if(this.authService.isFeatureAllowed(je.COMMENT))return le(d);{let g=d?.filter(u=>!u?.targetAnnotations?.filter(b=>b?.type===je.COMMENT)?.length);return le(g)}})):le([])),xt(Jt))}isFeatureAllowed(e){return this.configService.getConfig$().pipe($e(t=>!!t),ue(t=>k(f({},e),{config:t})),_e(t=>this.authService.getUser$().pipe(ue(i=>k(f({},t),{user:i})))),_e(t=>Ao(t.config,t.user,je.AREA)?le(k(f({},t),{featureAllowed:!0})):(this.loggingService.warn("Area feature is not allowed."),le(k(f({},t),{featureAllowed:!1})))),xt((t,i)=>t?.featureAllowed===i?.featureAllowed))}getDataFromDocumentIds(e,t){return this.getDataFromDocuments({documentIds:e,filters:t})}getDataFromDocuments(e){if(this.configService.getApiKey()){let{documentIds:t,filters:i}=e;if(t?.some(d=>!d)||!this.documentPaths)return le([]);let a=this.docService.getDocumentPaths()?.veltFolderId,l=le([]),s={useCollectionGroup:!0,isCollection:!0,useQuery:!0};if(this.commonDbService.shouldUseFirestore()||(s.documentId=t?.length?t[0]:void 0,s.organizationId=this.documentPaths?.organizationId),this.userPermissionService?.getIsContextEnabled()){let d=[U.DEFAULT_VELT_CONTEXT,...this.docService.getProcessedDocContext()],g=[];for(let u=0;u<(d?.length??0);u+=U.LISTENER_CONTEXT_BATCH_SIZE)g.push(d?.slice(u,u+U.LISTENER_CONTEXT_BATCH_SIZE)??[]);l=pn(g.map(u=>this.commonDbService.dbListener({feature:"allAreas",properties:k(f({},s),{firestoreQuery:[_r(ft("metadata.apiKey","==",this.configService?.getApiKey()),ft("metadata.documentId","in",t),ft("metadata.organizationId","==",this.documentPaths?.organizationId),...a?[ft("metadata.veltFolderId","==",a)]:[],...u?.length?[ft("context.accessFields","array-contains-any",u)]:[])]})}).pipe(la()))).pipe(ue(u=>Ra(u)))}else{let d=[];for(let g=0;g<(t?.length??0);g+=U.LISTENER_BATCH_SIZE)d.push(t?.slice(g,g+U.LISTENER_BATCH_SIZE)??[]);l=pn(d.map(g=>this.commonDbService.dbListener({feature:"allAreas",properties:k(f({},s),{firestoreQuery:[_r(ft("metadata.apiKey","==",this.configService?.getApiKey()),ft("metadata.documentId","in",g),ft("metadata.organizationId","==",this.documentPaths?.organizationId),...a?[ft("metadata.veltFolderId","==",a)]:[])]})}).pipe(la()))).pipe(ue(g=>Ra(g)))}return l.pipe(ue(({data:d,operation:g})=>{let u=[];return d&&(u=Object.values(d??{}).filter(b=>typeof b=="object")),{data:u,operation:g}}),ue(({data:d,operation:g})=>{if(!t)return{data:d,documentMap:{},operation:g};let u=d.reduce((b,E)=>{let A=E.metadata?.documentId;return A&&(b[A]||(b[A]=[]),b[A].push(E)),b},{});return{data:d,documentMap:u,operation:g}}),ue(({data:d,documentMap:g,operation:u})=>{if(!i)if(u?.type==="removed"){if(u?.ids?.length){let b=this.areaAnnotationById$.value;u?.ids?.forEach(E=>{delete b?.[E]}),this.areaAnnotationById$.next(b)}}else Object.entries(g??{}).forEach(([b,E])=>{this.setAreaAnnotationsByOrganizationIdAndDocumentId({organizationId:this.documentPaths?.organizationId,documentId:b,annotations:E})});return d}))}else return le([])}setAreaAnnotationsByOrganizationIdAndDocumentId({organizationId:e,documentId:t,annotations:i,queryHash:a}){try{if(t){e||(e=U.NO_ORGANIZATION_ID),a||(a=U.DEFAULT_QUERY_HASH);let l={};i?.forEach(d=>{d?.annotationId&&(l[d?.annotationId]=d)});let s=f(f({},this.areaAnnotationById$.value),l);this.areaAnnotationById$.next(s)}}catch(l){this.loggingService.catch("Error in AreaService setAreaAnnotationsByOrganizationIdAndDocumentId:",l)}}getAnnotationById(e){try{return this.areaAnnotationById$.value?.[e]?this.areaAnnotationById$.value?.[e]:void 0}catch(t){this.loggingService.catch("Error in AreaService getAnnotationById: ",t);return}}filterAnnotationsByLocationIds(e,t,i){try{return e.filter(a=>t.includes(a.locationId)||i?.includes(a?.location?.id)||t?.find(l=>l==a?.location?.id)||i?.find(l=>l==a?.locationId+""))}catch(a){return this.loggingService.catch("Error in AreaService filterAnnotationsByLocations:",a),[]}}calculateAreaAnnotationPosition(e,t=!1){try{if(e.targetElements?.length){let i=e.targetElements[0],a=e.targetElements[1];if(i?.xpath&&a?.xpath||i?.anchor&&a?.anchor){let l=null,s=null;if(i?.anchor){let d=this.domService.resolveAnchorRecord(i.anchor);d?.element&&d?.element instanceof HTMLElement&&!Co(d.element)&&this.domService.isElementVisible(d.element)&&Zr(d.element)&&(l=d.element)}else i?.xpath&&(l=this.domService.getElementFromXPath(i.xpath),l&&Co(l)&&(l=null),this.domService.isXpathWithId(i.xpath)||(!l&&i.cfXpath&&(l=this.domService.getElementFromXPath(i.cfXpath),l&&Co(l)&&(l=null)),!l&&i.fXpath&&(l=this.domService.getElementFromXPath(i.fXpath),l&&Co(l)&&(l=null))));if(a?.anchor){let d=this.domService.resolveAnchorRecord(a.anchor);d?.element&&d?.element instanceof HTMLElement&&!Co(d.element)&&this.domService.isElementVisible(d.element)&&Zr(d.element)&&(s=d.element)}else a?.xpath&&(s=this.domService.getElementFromXPath(a.xpath),s&&Co(s)&&(s=null),this.domService.isXpathWithId(a.xpath)||(!s&&a.cfXpath&&(s=this.domService.getElementFromXPath(a.cfXpath),s&&Co(s)&&(s=null)),!s&&a.fXpath&&(s=this.domService.getElementFromXPath(a.fXpath),s&&Co(s)&&(s=null))));if(l&&s){let d=ZK(l,s);if(d){let g=l,u=s,b=g.getBoundingClientRect(),E=u.getBoundingClientRect(),A=t?b.width:g.offsetWidth||b.width,M=t?b.height:g.offsetHeight||b.height,V=t?E.width:u.offsetWidth||E.width,q=t?E.height:u.offsetHeight||E.height,ae={};A&&M&&(ae={top:M*i.topPercentage/100,left:A*i.leftPercentage/100});let fe={};V&&q&&(fe={top:q*a.topPercentage/100,left:V*a.leftPercentage/100});let ie=!t,Ce=JK(ae.left,ae.top,l,d,ie),xe=JK(fe.left,fe.top,s,d,ie),ke,ye,Oe,Ne,Ue={};Ce.x>xe.x?Ce.y>xe.y?(Ne={x:Ce.x,y:Ce.y},ke={x:xe.x,y:xe.y},Ue.handle1=Ne,Ue.handle2=ke):(ye={x:Ce.x,y:Ce.y},Oe={x:xe.x,y:xe.y},Ue.handle1=ye,Ue.handle2=Oe):Ce.y>xe.y?(Oe={x:Ce.x,y:Ce.y},ye={x:xe.x,y:xe.y},Ue.handle1=Oe,Ue.handle2=ye):(ke={x:Ce.x,y:Ce.y},Ne={x:xe.x,y:xe.y},Ue.handle1=ke,Ue.handle2=Ne);let ze={topLeft:ke||{x:Oe?.x,y:ye?.y},bottomRight:Ne||{x:ye?.x,y:Oe?.y},topRight:ye||{x:Ne?.x,y:ke?.y},bottomLeft:Oe||{x:ke?.x,y:Ne?.y}};return Ue.coordinates=ze,Ue.targetElement=this.domService.getXPath(d),Ue}}}}return}catch(i){this.loggingService.catch("Error in AreaService calculateAreaAnnotationPosition:",i);return}}addArea(e,t=[],i,a,l,s){this.loggingService.log("%c[WB] Calling FUNCTION: addArea","color: green;");try{let d=this.authService.getUser();if(d)if(d.isReadOnly||d.isAnonymous)this.loggingService.catch("Anonymous/Readonly users cannot add areas.");else{let g=new mL;a&&(g.annotationId=a),g.from=d,g.color=U.DEFAULT_ANNOTATION_COLOR,g.lastUpdated=this.timestamp,i&&(g.targetAnnotations=[i]),g.props=new td;let u=this.domService.getCurrentWindowSizeValue();if(g.props.screenWidth=u.screenWidth,g.props.screenHeight=u.screenHeight,g.props.screenScrollHeight=u.screenScrollHeight,g.props.viewportWidth=window.innerWidth,g.props.viewportHeight=window.innerHeight,e||t?.length>0){let A=e?this.getPointsForAreaPinAnnotation(e):t;g.targetElements=[],A.forEach(M=>{g.targetElements.push(this.domService.getTargetElementForCursorPosition(e,void 0,void 0,void 0,void 0,!0,{clientX:M.x,clientY:M.y}))})}this.setLocationToAreaAnnotation(g),l&&(g.locationId=l.locationId,g.location=l.location),g.pageInfo=to(),g.pageInfo&&(g.pageInfo.screenWidth=this.domService.getCurrentWindowSizeValue()?.screenWidth);let b=this.getElementForAreaAnnotation(g),E=this.docService.getBaseMetadata("area",{element:b});if(g?.metadata||(g.metadata={}),g.metadata=f(f({},g.metadata),E),s?.access&&s?.accessFields){if(!this.userPermissionService?.hasUserContextAccess({userId:d.userId,accessFields:s.accessFields})){this.loggingService.catch("User does not have context access to add area annotation.",void 0,void 0,!0);return}g.context={access:s.access,accessFields:s.accessFields}}return this.saveAreaToDb(g),g}return}catch(d){this.loggingService.catch("Error in AreaService addArea: ",d);return}}setLocationToAreaAnnotation(e){try{let t=this.docService.getLocation();t?(e.locationId=t.locationId,e.location=t.location):(delete e.locationId,delete e.location)}catch(t){this.loggingService.catch("Error in AreaService setLocationToAreaAnnotation:",t)}}getElementForAreaAnnotation(e){try{let t,i,a;if(e.targetElements?.length){if(e.targetElements[0]?.anchor){let l=this.domService.resolveAnchorRecord(e.targetElements[0].anchor);l?.element&&this.domService.isElementVisible(l.element)&&Zr(l.element)&&(i=l.element)}else e.targetElements[0]?.xpath&&(i=this.domService.getElementFromXPath(e.targetElements[0].xpath));if(e.targetElements[1]?.anchor){let l=this.domService.resolveAnchorRecord(e.targetElements[1].anchor);l?.element&&this.domService.isElementVisible(l.element)&&Zr(l.element)&&(a=l.element)}else e.targetElements[1]?.xpath&&(a=this.domService.getElementFromXPath(e.targetElements[1].xpath))}return i&&a&&(t=ZK(i,a)),t}catch(t){return this.loggingService.catch("Error in AreaService getElementForAreaAnnotation: ",t),null}}saveAreaToDb(e){this.loggingService.log("%c[WB] Calling FUNCTION: saveAreaToDb","color: green;");try{this.authService.getUser()&&this.authService.isFeatureAllowed(je.AREA)&&pn([this.docService.getDocumentPaths$(),this.databaseService.getDb()]).pipe($e(([t,i])=>!!t&&!!i),ut(1),_e(([t,i])=>{if(this.documentPaths=t,this.documentPaths?.area){e.annotationId||(e.annotationId=this.commonDbService.generateDocumentId()),e.pageInfo&&(e.pageInfo.areaUrl=this.generateAreaUrl(e));let a=JSON.parse(JSON.stringify(e));if(a.position=null,!a?.metadata?.documentId){a?.metadata||(a.metadata={});let d=this.docService.getBaseMetadata("area");a.metadata=f(f({},a?.metadata),d)}this.domService.toggleAnnotationSelection(a),this.analyticsService.trackEvent(K.Events.Area.AREA_ADDED,{annotationId:e.annotationId});let{documentId:l,organizationId:s}=this.getDocumentIdAndOrganizationIdFromAreaAnnotation(e);return this.commonDbService.setData({feature:"area",properties:{id:e.annotationId,documentId:l,organizationId:s},data:JSON.parse(JSON.stringify(a))})}else return le(null)})).subscribe(()=>{},t=>{this.loggingService.catch("Error in AreaService saveAreaToDb subscription: ",t)})}catch(t){this.loggingService.catch("Error in AreaService saveAreaToDb: ",t)}}getDocumentIdAndOrganizationIdFromAreaAnnotation(e){try{return{documentId:e?.metadata?.documentId,organizationId:e?.metadata?.organizationId}}catch(t){return this.loggingService.catch("Error in AreaService getDocumentIdAndOrganizationIdFromAreaAnnotation: ",t),{}}}updateArea(e,t=!1,i){try{i&&this.setLocationToAreaAnnotation(e),t&&this.updateNotificationsDatabase(e,_N.UPDATED),this.updateAreaToDb(e)}catch(a){this.loggingService.catch("Error in AreaService updateArea: ",a)}}updateAreaToDb(e){this.loggingService.log("%c[WB] Calling FUNCTION: updateAreaToDb","color: green;");try{if(this.domService.updateSelectedAnnotationInMap([e]),this.authService.getUser()&&this.authService.isFeatureAllowed(je.AREA)){let t=JSON.parse(JSON.stringify(e));if(t.position=null,!t?.metadata?.documentId){t?.metadata||(t.metadata={});let l=this.docService.getBaseMetadata("area");t.metadata=f(f({},t?.metadata),l)}let{documentId:i,organizationId:a}=this.getDocumentIdAndOrganizationIdFromAreaAnnotation(e);this.commonDbService.setData({feature:"area",properties:{id:e.annotationId,documentId:i,organizationId:a},data:JSON.parse(JSON.stringify(t))})}}catch(t){this.loggingService.catch("Error in AreaService updateAreaToDb: ",t)}}deleteAreaPinAnnotations(e){try{let t=this.domService.getSelectedAnnotationsMap(),i=this.authService.getUser(),a=[];Object.keys(t??{}).forEach(l=>Q(this,null,function*(){let s=t[l];s.type==="area"&&i&&s.from&&(i?.isAdmin||s.from.userId===i.userId)&&a.push(s)})),a?.length&&(this.analyticsService.trackEvent(K.Events.Area.AREA_DELETE_TRIGGERED,{triggerType:e,annotationId:a.map(l=>l.annotationId).join()}),this.dialog.open(xl,{panelClass:"velt-mat-dialog-container",data:{title:"Delete area?",message:"This selected area will be deleted.",yesButton:"Delete",noButton:"Cancel",variant:"area"}}).afterClosed().pipe(ut(1)).subscribe(l=>{l&&(a.forEach(s=>Q(this,null,function*(){yield this.deleteAreaPinAnnotation(s)})),setTimeout(()=>{document.querySelectorAll(`[${U.SNIPPYLY_HIGHLIGHT}]`).forEach(d=>{this.domService.removeHighlightFromElement(d)})},100))})),this.domService.resetSelectedAnnotationsMap(!0,"area")}catch(t){this.loggingService.catch("Error in AreaService deleteAreaPinAnnotations: ",t)}}getAreaAnnotationsByOrganizationIdAndDocumentId({organizationId:e,documentId:t}){try{let i={};return Object.values(this.areaAnnotationById$.value??{}).forEach(a=>{a?.metadata?.documentId==t&&a?.metadata?.organizationId==e&&(i[a?.annotationId]=a)}),Object.values(i??{})}catch(i){return this.loggingService.catch("Error in AreaService getAreaAnnotationsByOrganizationIdAndDocumentId:",i),[]}}onDeleteTargetAnnotation(e,t){try{if(this.docService.getDocumentId()&&this.areaAnnotationById$.value){let a=Object.values(this.areaAnnotationById$.value||{}),l;t?l=a.find(s=>s?.annotationId===t):l=a.find(s=>s?.targetAnnotations?.find(d=>d?.annotationId===e)),l&&(l.targetAnnotations=l.targetAnnotations?.filter(s=>s?.annotationId!==e),l.targetAnnotations?.length?this.updateAreaToDb(l):this.deleteAreaPinAnnotation(l))}}catch(i){this.loggingService.catch("Error in AreaService onDeleteTargetAnnotation: ",i)}}deleteAreaPinAnnotation(e){if(this.authService.isFeatureAllowed(je.AREA)&&this.documentPaths?.area&&e?.annotationId){this.updateNotificationsDatabase(e,_N.DELETED),this.analyticsService.trackEvent(K.Events.Area.AREA_DELETED,{annotationId:e.annotationId});let{documentId:t,organizationId:i}=this.getDocumentIdAndOrganizationIdFromAreaAnnotation(e);return this.commonDbService.deleteData({feature:"area",properties:{id:e.annotationId,documentId:t,organizationId:i}})}else return Promise.resolve()}enableArea(){try{this.areaEnabled$.next(!0)}catch(e){this.loggingService.catch("Error in AreaService enableArea: ",e)}}disableArea(){try{this.areaEnabled$.next(!1)}catch(e){this.loggingService.catch("Error in AreaService disableArea: ",e)}}getAreaEnabled$(){try{return this.areaEnabled$.asObservable()}catch(e){return this.loggingService.catch("Error in AreaService getAreaEnabled$: ",e),le(!1)}}getAreaEnabled(){try{return this.areaEnabled$.value}catch(e){return this.loggingService.catch("Error in AreaService getAreaEnabled: ",e),!1}}enableAddAreaMode(){this.authService.isFeatureAllowed(je.AREA)?(this.analyticsService.trackEvent(K.Events.Area.AREA_ADD_MODE_ENABLED),this.addAreaMode$.next(!0)):this.loggingService.catch("Error in AreaService enableAddAreaMode: ","Area feature is not enabled.")}disableAddAreaMode(){this.analyticsService.trackEvent(K.Events.Area.AREA_ADD_MODE_DISABLED),this.addAreaMode$.next(!1)}addAreaModeChange(){return this.addAreaMode$.asObservable()}getPointsForAreaPinAnnotation(e){let t=[],i=e,a=i?.touches?.length?i.touches[0]?.clientX:i.clientX,l=i?.touches?.length?i.touches[0]?.clientY:i.clientY;return t.push({x:a,y:l}),t.push({x:a+100,y:l+100}),t}get timestamp(){return this.commonDbService.getServerTimestamp()}isElementInsideAllowedElements(e){try{return this.domService.isElementInsideListedElementIds(e,this.allowedElementIds$.value)}catch(t){return this.loggingService.catch("Error in AreaService isElementInsideAllowedElements: ",t),!1}}updateNotificationsDatabase(e,t){try{let i={annotationData:e,actionType:t,notificationSource:"area"};this.notificationService.updateNotificationDatabase(i)}catch(i){this.loggingService.catch("Error in AreaService updateNotificationsDatabase: ",i)}}getAreaUrl(e){try{return e?.pageInfo?.areaUrl?e.pageInfo.areaUrl:(e?.pageInfo||(e.pageInfo=to(),e.pageInfo&&(e.pageInfo.screenWidth=this.domService.getCurrentWindowSizeValue()?.screenWidth)),e.pageInfo.areaUrl=this.generateAreaUrl(e),this.updateArea(e),e.pageInfo?.areaUrl)}catch(t){this.loggingService.catch("Error in AreaService getAreaUrl: ",t);return}}generateAreaUrl(e){let t=new URL(window.location.href);return t.searchParams.delete(U.URL_PARAMS.TAG_ID),t.searchParams.append(U.URL_PARAMS.TAG_ID,e.annotationId),t.href}generateAreaAnnotationId(){return Q(this,null,function*(){try{if(this.docService.getDocumentPaths()?.area){let t=this.commonDbService.generateDocumentId();return yield Hu(10),t||""}else return""}catch(e){return this.loggingService.catch("Error in AreaService generateAreaAnnotationId: ",e),""}})}};o.\u0275fac=function(t){return new(t||o)(X(lt),X(Ft),X(ct),X($n),X(Tn),X(We),X(Be),X(eo),X(Ln),X(Fo),X(x),X(xn),X(il))},o.\u0275prov=Me({token:o,factory:o.\u0275fac,providedIn:"root"});let n=o;return n})();var U_e=n=>{try{let o={USE_PROFILES:{svg:!0,svgFilters:!0},FORBID_ATTR:["onerror","onload","onclick","onmouseover","onmouseout","onmouseenter","onmouseleave","onmousemove","onmousedown","onmouseup","onwheel","onscroll","onkeydown","onkeyup","onkeypress","onfocus","onblur","onchange","onsubmit","on*"],FORBID_TAGS:["script","style","iframe","object","embed","form"]};return g3.sanitize(n,o)}catch(o){return at.catch("Error in File utils sanitizeSvg: ",o),""}},V_e=n=>{try{return n.name.split(".").slice(0,-1).join(".")}catch(o){at.catch("Error in File utils getFileName: ",o);return}},xQ=n=>{try{return/(?:\.([^.]+))?$/.exec(n?.name)[1]}catch(o){at.catch("Error in File utils getFileExtension: ",o);return}},B_e=(n,o)=>{try{let r=n.slice(0,-1,n.type);return new File([r],o+"."+xQ(n),{type:n.type})}catch(r){at.catch("Error in File utils updateFile: ",r);return}};var kQ={mp4:"video/mp4",mov:"video/quicktime",avi:"video/x-msvideo",wmv:"video/x-ms-wmv",flv:"video/x-flv",mp3:"audio/mpeg",wav:"audio/wav",ogg:"audio/ogg",webm:"video/webm",mkv:"video/x-matroska",m4v:"video/x-m4v",m4a:"audio/x-m4a",aac:"audio/aac","3gp":"video/3gpp","3g2":"video/3gpp2",jpg:"image/jpeg",jpeg:"image/jpeg",png:"image/png",gif:"image/gif",bmp:"image/bmp",svg:"image/svg+xml",webp:"image/webp",pdf:"application/pdf",doc:"application/msword",docx:"application/vnd.openxmlformats-officedocument.wordprocessingml.document",xls:"application/vnd.ms-excel",xlsx:"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",ppt:"application/vnd.ms-powerpoint",pptx:"application/vnd.openxmlformats-officedocument.presentationml.presentation",odt:"application/vnd.oasis.opendocument.text",ods:"application/vnd.oasis.opendocument.spreadsheet",zip:"application/zip",rar:"application/x-rar-compressed",txt:"text/plain",rtf:"application/rtf",html:"text/html",htm:"text/html",csv:"text/csv",ics:"text/calendar",vcf:"text/x-vcard",js:"application/javascript",css:"text/css",json:"application/json",xml:"application/xml",swf:"application/x-shockwave-flash"};var yp=(()=>{let o=class o{constructor(e,t,i,a,l){this.authService=e,this.configService=t,this.coreActionsService=i,this.loggingService=a,this.attachmentResolverService=l,this.storage=hw();try{this.configService.getApiKey$().subscribe(s=>{this.apiKey=s}),this.authService.getFirebaseConfig$().subscribe(s=>{if(s&&s.firebaseOptions?.storageBucket){this.storage=hw(void 0,s?.firebaseOptions?.storageBucket);let d=this.configService.getProxyConfig();d?.storageHost&&(this.storage.host=d.storageHost)}},s=>{this.loggingService.catch("Error in StorageService constructor: ",s)})}catch(s){this.loggingService.catch("Error in StorageService constructor:",s)}}createAttachment({path:e,file:t}){try{let i=new Zb;i.name=t.name;let a=B_e(t,`${i.attachmentId}_${V_e(t)}`),l=`${this.apiKey}/${e}/${a?.name}`;return i.bucketPath=l,i.size=t.size,i.type=xQ(t),i?.type&&(i.mimeType=kQ[i?.type]),i}catch(i){return this.loggingService.catch("Error in StorageService createAttachment: ",i),null}}sanitizeSvgFile(e){return Q(this,null,function*(){if(e.type===kQ.svg)try{let t=yield e.text(),i=U_e(t);return new File([i],e.name,{type:e.type})}catch(t){return this.loggingService.catch("Error in StorageService sanitizeSvgFile: ",t),e}return e})}uploadAttachmentToStorage(l){return Q(this,arguments,function*({attachment:e,file:t,resolve:i,reject:a}){try{let s=fw(this.storage,e.bucketPath),d=kY(s,t,{cacheControl:"public,max-age=3600"});d.on("state_changed",g=>{let u=g.bytesTransferred/g.totalBytes*100},g=>{a(g)},()=>{xY(d.snapshot.ref).then(g=>{e.url=g,i(e)})})}catch(s){this.loggingService.catch("Error in StorageService uploadAttachmentToStorage: ",s),a(s)}})}uploadToResolver(d){return Q(this,arguments,function*({file:e,attachment:t,metadata:i,resolve:a,reject:l,scope:s}){try{i.attachmentId=t.attachmentId;let g={attachmentId:t.attachmentId,name:t.name,file:e,metadata:i,mimeType:t.mimeType},u=ot();this.coreActionsService.triggerAction(Qe.ATTACHMENT_RESOLVER,{event:K.Events.Resolver.ATTACHMENT_SAVE_REQUEST_FORMED,timestamp:new Date().getTime(),uniqueId:u,methodName:kc.UPLOAD_TO_RESOLVER,source:"internal",payload:{attachment:g,eventType:Io.ATTACHMENT_ADD}});let b=yield this.attachmentResolverService.saveAttachment({attachment:g,eventType:Io.ATTACHMENT_ADD},u,s);b&&b.data?.url?(t.url=b.data?.url,a(t)):l(new Error("Failed to upload attachment to resolver"))}catch(g){this.loggingService.catch("Error in StorageService uploadToResolver: ",g),l(g)}})}uploadFile({path:e,file:t,useAttachmentResolver:i,metadata:a,attachmentScope:l}){return new Promise((s,d)=>Q(this,null,function*(){try{if(!this.apiKey)throw new Error("API key not configured");let g=yield this.sanitizeSvgFile(t),u=this.createAttachment({path:e,file:g});if(!u)throw new Error("Attachment not created");i?this.uploadToResolver({file:g,attachment:u,metadata:a,resolve:s,reject:d,scope:l}):this.uploadAttachmentToStorage({attachment:u,file:g,resolve:s,reject:d})}catch(g){this.loggingService.catch("Error in StorageService uploadFile:",g),d(g)}}))}uploadChunk(e,t,i,a){return new Promise((l,s)=>{try{if(a?.useAttachmentResolver){let d=this.createAttachment({path:e,file:t});if(!d){s(new Error("Attachment not created for chunk upload"));return}this.uploadToResolver({file:t,attachment:d,metadata:a.metadata,resolve:g=>l(g.url),reject:s,scope:a.attachmentScope});return}if(this.apiKey){let d=`${this.apiKey}/${e}/${t.name}`,g=fw(this.storage,d),u=kY(g,t,{cacheControl:"public,max-age=3600"});u.on("state_changed",b=>{let E=b.bytesTransferred/b.totalBytes*100},b=>{s(b)},()=>{xY(u.snapshot.ref).then(b=>{l(b)}).catch(b=>{this.loggingService.catch(`[uploadChunk] Error getting download URL for chunk ${i}:`,b),s(b)})})}else{let d=new Error("API key not available");this.loggingService.catch("[uploadChunk] API key not available",d),s(d)}}catch(d){this.loggingService.catch(`[uploadChunk] Error in StorageService uploadChunk for chunk ${i}: `,d),s(d)}})}downloadAttachment(e){try{if(e.url){let t=new XMLHttpRequest;t.responseType="blob",t.onload=()=>{let i=t.response,a=document.createElement("a"),l=window.URL.createObjectURL(i);a.setAttribute("type","hidden"),a.setAttribute(U.ATTRIBUTES.VELT_DOWNLOAD_BUTTON,"true"),a.classList.add("snippyly-overlay-panel"),a.href=l,e?.name&&(a.download=e?.name),document.body.appendChild(a);let s=new MouseEvent("click",{view:window,bubbles:!0,cancelable:!1});a.dispatchEvent(s),window.URL.revokeObjectURL(l),a.remove()},t.onerror=()=>{window.open(e.url,"_blank")},t.open("GET",e.url),t.send()}}catch(t){this.loggingService.catch("Error in StorageService downloadAttachment: ",t)}}deleteAttachment({attachment:e,metadata:t,useAttachmentResolver:i,attachmentScope:a}){return new Promise((l,s)=>{if(i){let d=ot();this.coreActionsService.triggerAction(Qe.ATTACHMENT_RESOLVER,{event:K.Events.Resolver.ATTACHMENT_DELETE_REQUEST_FORMED,timestamp:new Date().getTime(),uniqueId:d,methodName:kc.DELETE_ATTACHMENT,source:"internal",payload:{attachmentId:e.attachmentId,metadata:t}}),this.attachmentResolverService.deleteAttachment({attachmentId:e.attachmentId,metadata:t},d,a).then(()=>{l(null)}).catch(g=>{s(g)})}else{let d=fw(this.storage,e.bucketPath);yY(d).then(()=>{l(null)}).catch(g=>{l(null)})}})}deleteFileFromPath(e){return new Promise((t,i)=>{let a=fw(this.storage,e);yY(a).then(()=>{t(null)}).catch(l=>{i(l)})})}};o.\u0275fac=function(t){return new(t||o)(X(We),X(Ft),X(tr),X(x),X(Gs))},o.\u0275prov=Me({token:o,factory:o.\u0275fac,providedIn:"root"});let n=o;return n})();var go=(()=>{let o=class o{constructor(e){this.loggingService=e,this._customStatusMap=new Se(U.CommentAnnotationStatusMap),this._customPriorityMap=new Se(U.CommentAnnotationPriorityMap),this._customCategoryMap=new Se(U.CommentCategoryMap);try{let t=sessionStorage.getItem(U.SESSION_STORAGE.VELT_CUSTOM_PRIORITY_MAP);t&&this._customPriorityMap.next(JSON.parse(t));let i=sessionStorage.getItem(U.SESSION_STORAGE.VELT_CUSTOM_STATUS_MAP);i&&this._customStatusMap.next(JSON.parse(i));let a=sessionStorage.getItem(U.SESSION_STORAGE.VELT_CUSTOM_CATEGORY_MAP);a&&this._customCategoryMap.next(JSON.parse(a))}catch(t){this.loggingService.catch("Error in CustomFilterService constructor: ",t)}}setCustomStatusFilters(e){try{if(e.length<2){this._customStatusMap.next(U.CommentAnnotationStatusMap),sessionStorage.setItem(U.SESSION_STORAGE.VELT_CUSTOM_STATUS_MAP,JSON.stringify(U.CommentAnnotationStatusMap)),this.loggingService.catch("Custom status filters must have at least 2 filters");return}let t={};e.forEach(i=>{t[i.id]=i,i.type||(i.type="ongoing")}),this._customStatusMap.next(t),sessionStorage.setItem(U.SESSION_STORAGE.VELT_CUSTOM_STATUS_MAP,JSON.stringify(t))}catch(t){this.loggingService.catch("Error in CustomFilterService setCustomStatusFilters: ",t)}}setCustomPriorityFilters(e){try{if(e.length<2){this._customPriorityMap.next(U.CommentAnnotationPriorityMap),sessionStorage.setItem(U.SESSION_STORAGE.VELT_CUSTOM_PRIORITY_MAP,JSON.stringify(U.CommentAnnotationPriorityMap)),this.loggingService.catch("Custom priority filters must have at least 2 filters");return}let t={};e.forEach(i=>{t[i.id]=i}),this._customPriorityMap.next(t),sessionStorage.setItem(U.SESSION_STORAGE.VELT_CUSTOM_PRIORITY_MAP,JSON.stringify(t))}catch(t){this.loggingService.catch("Error in CustomFilterService setCustomPriorityFilters: ",t)}}setCustomCategories(e){try{let t={};e.forEach(i=>{t[i.id]=i}),this._customCategoryMap.next(t),sessionStorage.setItem(U.SESSION_STORAGE.VELT_CUSTOM_CATEGORY_MAP,JSON.stringify(t))}catch(t){this.loggingService.catch("Error in CustomFilterService setCustomCategories: ",t)}}get customStatusMap$(){return this._customStatusMap.asObservable()}get customPriorityMap$(){return this._customPriorityMap.asObservable()}get customCategoryMap$(){return this._customCategoryMap.asObservable()}get defaultStatus(){try{let t=Object.entries(this._customStatusMap.value).find(([i,a])=>a.type==="default");if(t)return t[1]}catch(e){this.loggingService.catch("Error in CustomFilterService defaultStatus: ",e)}return U.CommentAnnotationStatusMap.OPEN}get resolvedStatus(){try{let t=Object.entries(this._customStatusMap.value).find(([i,a])=>a.type==="terminal");if(t)return t[1]}catch(e){this.loggingService.catch("Error in CustomFilterService resolvedStatus: ",e)}return U.CommentAnnotationStatusMap.OPEN}get ongoingStatuses(){try{let t=Object.entries(this._customStatusMap.value).filter(([i,a])=>a.type==="ongoing");if(t)return t.map(i=>i[1])}catch(e){this.loggingService.catch("Error in CustomFilterService ongoingStatuses: ",e)}return[U.CommentAnnotationStatusMap.IN_PROGRESS]}convertLegacyAnnotationStatus(e){try{if(typeof e.status=="string"||e.status===void 0){let t=Object.entries(this._customStatusMap.value),i=t.find(([a,l])=>l.type==="default");switch(e.status){case"open":i&&(e.status=i[1]);break;case"inProgress":let a=t.find(([s,d])=>d.type==="ongoing");a&&(e.status=a[1]);break;case"resolved":let l=t.find(([s,d])=>d.type==="terminal");l&&(e.status=l[1]);break;default:i&&(e.status=i[1]);break}}return e}catch(t){return this.loggingService.catch("Error in CustomFilterService convertLegacyAnnotation: ",t),e}}convertLegacyPriority(e){try{typeof e.priority=="string"&&(e.priority=U.CommentAnnotationPriorityMap[e.priority])}catch(t){this.loggingService.catch("Error in CustomFilterService convertLegacyPriority: ",t)}return e}convertLegacyCategory(e){try{if(e.commentCategories===void 0||e.commentCategories===null||!Array.isArray(e.commentCategories)||e.commentCategories.length===0)return e;typeof e.commentCategories[0]=="string"&&(e.commentCategories=e.commentCategories.map(t=>U.CommentCategoryMap[t]))}catch(t){this.loggingService.catch("Error in CustomFilterService convertLegacyCategory: ",t)}return e}};o.\u0275fac=function(t){return new(t||o)(X(x))},o.\u0275prov=Me({token:o,factory:o.\u0275fac,providedIn:"root"});let n=o;return n})();var j_e=(()=>{let o=class o{constructor(e,t){this.domService=e,this.loggingService=t,this.keyEventSubject$=new it;try{this.loggingService.log("%c[WB] Creating CLASS: HotkeyService","color: blue;"),this.keyEvent$=this.keyEventSubject$.asObservable().pipe(Vh()),this.domService.onWindowKeydown$().subscribe(i=>{this.keyEventSubject$.next(i)})}catch(i){this.loggingService.catch("Error in HotkeyService constructor: ",i)}}getKeyPressEvent(e,t={}){try{return this.loggingService.log("%c[WB] Calling FUNCTION: getKeyPressEvent","color: green;"),this.keyEvent$.pipe($e(i=>i?.key===e),$e(i=>!(!!t?.includeCtrl!==i.ctrlKey||!!t?.includeAlt!==i.altKey||!!t?.includeShift!==i.shiftKey||!!t?.includeMeta!==i.metaKey)),$e(()=>this.isNoInputFocused()))}catch(i){return this.loggingService.catch("Error in HotkeyService getKeyPressEvent: ",i),new Gt}}isNoInputFocused(){try{let e=document.activeElement;for(;e&&e?.tagName!=="BODY";){if(e.tagName==="INPUT"||e.tagName==="TEXTAREA"||e?.isContentEditable)return!1;e=e?.parentElement}return!0}catch(e){return this.loggingService.catch("Error in HotkeyService isNoInputFocused: ",e),!1}}};o.\u0275fac=function(t){return new(t||o)(X(Be),X(x))},o.\u0275prov=Me({token:o,factory:o.\u0275fac,providedIn:"root"});let n=o;return n})();function HWe(n,o){n&1&&(de(),h(0,"svg",16),D(1,"rect",17)(2,"path",18)(3,"path",19)(4,"rect",20)(5,"path",21),S())}function GWe(n,o){n&1&&(de(),h(0,"svg",16),D(1,"rect",22)(2,"path",23)(3,"path",19)(4,"rect",20)(5,"path",21),S())}function zWe(n,o){if(n&1&&(C(0),h(1,"div",6)(2,"div",7),p(3,HWe,6,0,"svg",8)(4,GWe,6,0,"ng-template",null,1,Ve),S(),h(6,"div",9),ne(7),R(8,"translate"),D(9,"br"),ne(10),R(11,"translate"),S(),h(12,"div",10)(13,"p"),ne(14),R(15,"translate"),de(),h(16,"svg",11),D(17,"path",12)(18,"path",13)(19,"path",14)(20,"path",15),S(),ne(21),R(22,"translate"),S(),St(),h(23,"p"),ne(24),R(25,"translate"),S()()(),_()),n&2){let r=Ie(5),e=c();m(3),v("ngIf",e.darkMode)("ngIfElse",r),m(4),Ee(" ",N(8,7,"Allow mic permission to")),m(3),Ee("",N(11,9,"enable your audio")," "),m(4),Ee(" ",N(15,11,"1. Click the")," "),m(7),Ee(" ",N(22,13,"page info icon in your browser\u2019s address bar")," "),m(3),Ee(" ",N(25,15,"2. Turn on Microphone")," ")}}function WWe(n,o){n&1&&(de(),h(0,"svg",16),D(1,"rect",17)(2,"path",24)(3,"path",19)(4,"rect",20)(5,"path",21),S())}function qWe(n,o){n&1&&(de(),h(0,"svg",16),D(1,"rect",22)(2,"path",25)(3,"path",19)(4,"rect",20)(5,"path",21),S())}function YWe(n,o){if(n&1&&(C(0),h(1,"div",6)(2,"div",7),p(3,WWe,6,0,"svg",8)(4,qWe,6,0,"ng-template",null,2,Ve),S(),h(6,"div",9),ne(7),R(8,"translate"),D(9,"br"),ne(10),R(11,"translate"),S(),h(12,"div",10)(13,"p"),ne(14),R(15,"translate"),de(),h(16,"svg",11),D(17,"path",12)(18,"path",13)(19,"path",14)(20,"path",15),S(),ne(21),R(22,"translate"),S(),St(),h(23,"p"),ne(24),R(25,"translate"),S()()(),_()),n&2){let r=Ie(5),e=c();m(3),v("ngIf",e.darkMode)("ngIfElse",r),m(4),Ee(" ",N(8,7,"Allow camera permission")),m(3),Ee("",N(11,9,"to enable your video")," "),m(4),Ee(" ",N(15,11,"1. Click the")," "),m(7),Ee(" ",N(22,13,"page info icon in your browser\u2019s address bar")," "),m(3),Ee(" ",N(25,15,"2. Turn on Camera")," ")}}var jL=(()=>{let o=class o{constructor(e,t,i,a,l){this.loggingService=e,this.themeService=t,this.elementRef=i,this.matDialogRef=a,this.data=l,this.veltElement=!0,this.darkMode=!0;try{this.loggingService.log("%c[WB] Creating CLASS: DevicePermissionDeniedDialogComponent","color: blue;"),this.type=this.data?.type,[!0,!1].includes(this.data?.darkMode)&&(this.darkMode=this.data?.darkMode)}catch(s){this.loggingService.catch("Error in DevicePermissionDeniedDialogComponent constructor: ",s)}}ngOnDestroy(){}};o.\u0275fac=function(t){return new(t||o)(y(x),y(_t),y(Z),y(Vi,8),y(Yc,8))},o.\u0275cmp=O({type:o,selectors:[["velt-device-permission-denied-dialog-internal"]],hostVars:1,hostBindings:function(t,i){t&2&&T("data-velt-element",i.veltElement)},inputs:{type:"type"},standalone:!1,decls:5,vars:5,consts:[["devicePermissionDialogRef",""],["defaultAudioIcon",""],["defaultVideoIcon",""],[1,"velt-device-permission-denied-dialog--container",3,"snippylyOverlay","snippylyOverlayZIndex"],[3,"ngSwitch"],[4,"ngSwitchCase"],[1,"velt-device-permission-denied-dialog"],[1,"velt-device-permission-denied-dialog--icon"],["width","61","height","60","viewBox","0 0 61 60","fill","none","xmlns","http://www.w3.org/2000/svg",4,"ngIf","ngIfElse"],[1,"velt-device-permission-denied-dialog--header"],[1,"velt-device-permission-denied-dialog--content"],["width","13","height","12","viewBox","0 0 13 12","fill","none","xmlns","http://www.w3.org/2000/svg",1,"velt-device-permission-denied-dialog--page-info-icon"],["d","M4.375 2.5C4.375 3.53553 3.53553 4.375 2.5 4.375C1.46447 4.375 0.625 3.53553 0.625 2.5C0.625 1.46447 1.46447 0.625 2.5 0.625C3.53553 0.625 4.375 1.46447 4.375 2.5Z","stroke","currentColor","stroke-opacity","0.6","stroke-width","1.25"],["d","M5 2.5H12.5","stroke","currentColor","stroke-opacity","0.6","stroke-width","1.25"],["d","M0 8.75H7.5","stroke","currentColor","stroke-opacity","0.6","stroke-width","1.25"],["d","M11.875 8.75C11.875 9.78553 11.0355 10.625 10 10.625C8.96447 10.625 8.125 9.78553 8.125 8.75C8.125 7.71447 8.96447 6.875 10 6.875C11.0355 6.875 11.875 7.71447 11.875 8.75Z","stroke","currentColor","stroke-opacity","0.6","stroke-width","1.25"],["width","61","height","60","viewBox","0 0 61 60","fill","none","xmlns","http://www.w3.org/2000/svg"],["x","0.5","y","4","width","56","height","56","rx","28","fill","white","fill-opacity","0.04"],["d","M23.5026 20.333C23.5026 19.0069 24.0294 17.7352 24.9671 16.7975C25.9048 15.8598 27.1765 15.333 28.5026 15.333C29.8287 15.333 31.1005 15.8598 32.0381 16.7975C32.9758 17.7352 33.5026 19.0069 33.5026 20.333V28.6663C33.5027 29.1599 33.4297 29.6508 33.2859 30.123M29.9526 33.4563C29.2054 33.6828 28.4155 33.7311 27.6463 33.5973C26.8771 33.4636 26.1499 33.1516 25.5229 32.6863C24.8959 32.2211 24.3866 31.6154 24.0358 30.9179C23.685 30.2204 23.5024 29.4504 23.5026 28.6697V27.003M16.8359 28.6663C16.8356 30.7719 17.405 32.8383 18.484 34.6465C19.5629 36.4546 21.111 37.9371 22.9642 38.9366C24.8174 39.9362 26.9066 40.4156 29.0102 40.324C31.1137 40.2324 33.1533 39.5732 34.9126 38.4163M38.2459 35.083C39.5023 33.1791 40.1701 30.9474 40.1659 28.6663M21.8359 46.9997H35.1693M28.5026 40.333V46.9997","stroke","white","stroke-opacity","0.52","stroke-width","2.5","stroke-linecap","round","stroke-linejoin","round"],["d","M13.5 17L43.5 47","stroke","currentColor","stroke-width","2.5","stroke-linecap","round","stroke-linejoin","round"],["x","36.5","width","24","height","24","rx","12","fill","currentColor"],["d","M48.5 18.99V19M48.5 14V5","stroke","white","stroke-width","2.5","stroke-linecap","round","stroke-linejoin","round"],["x","0.5","y","4","width","56","height","56","rx","28","fill","black","fill-opacity","0.04"],["d","M23.5026 20.333C23.5026 19.0069 24.0294 17.7352 24.9671 16.7975C25.9048 15.8598 27.1765 15.333 28.5026 15.333C29.8287 15.333 31.1005 15.8598 32.0381 16.7975C32.9758 17.7352 33.5026 19.0069 33.5026 20.333V28.6663C33.5027 29.1599 33.4297 29.6508 33.2859 30.123M29.9526 33.4563C29.2054 33.6828 28.4155 33.7311 27.6463 33.5973C26.8771 33.4636 26.1499 33.1516 25.5229 32.6863C24.8959 32.2211 24.3866 31.6154 24.0358 30.9179C23.685 30.2204 23.5024 29.4504 23.5026 28.6697V27.003M16.8359 28.6663C16.8356 30.7719 17.405 32.8383 18.484 34.6465C19.5629 36.4546 21.111 37.9371 22.9642 38.9366C24.8174 39.9362 26.9066 40.4156 29.0102 40.324C31.1137 40.2324 33.1533 39.5732 34.9126 38.4163M38.2459 35.083C39.5023 33.1791 40.1701 30.9474 40.1659 28.6663M21.8359 46.9997H35.1693M28.5026 40.333V46.9997","stroke","black","stroke-opacity","0.52","stroke-width","2.5","stroke-linecap","round","stroke-linejoin","round"],["d","M42.375 39.2135C42.7034 39.1007 42.9883 38.8881 43.19 38.6054C43.3917 38.3227 43.5001 37.9841 43.5 37.6369V26.3635C43.4998 26.0795 43.4271 25.8003 43.2888 25.5523C43.1504 25.3043 42.9509 25.0958 42.7093 24.9465C42.4677 24.7973 42.192 24.7122 41.9083 24.6994C41.6246 24.6867 41.3424 24.7466 41.0883 24.8735L33.5 28.6669V30.3335V25.3333C33.5 24.4493 33.1488 23.6014 32.5237 22.9763C31.8986 22.3512 31.0507 22 30.1667 22H25.1667M33.5 37V38.6667C33.5 39.5507 33.1488 40.3986 32.5237 41.0237C31.8986 41.6488 31.0507 42 30.1667 42H16.8333C15.9493 42 15.1014 41.6488 14.4763 41.0237C13.8512 40.3986 13.5 39.5507 13.5 38.6667V25.3333C13.5 24.4493 13.8512 23.6014 14.4763 22.9763C15.1014 22.3512 15.9493 22 16.8333 22H18.5","stroke","white","stroke-opacity","0.52","stroke-width","2.5","stroke-linecap","round","stroke-linejoin","round"],["d","M42.375 39.2135C42.7034 39.1007 42.9883 38.8881 43.19 38.6054C43.3917 38.3227 43.5001 37.9841 43.5 37.6369V26.3635C43.4998 26.0795 43.4271 25.8003 43.2888 25.5523C43.1504 25.3043 42.9509 25.0958 42.7093 24.9465C42.4677 24.7973 42.192 24.7122 41.9083 24.6994C41.6246 24.6867 41.3424 24.7466 41.0883 24.8735L33.5 28.6669V30.3335V25.3333C33.5 24.4493 33.1488 23.6014 32.5237 22.9763C31.8986 22.3512 31.0507 22 30.1667 22H25.1667M33.5 37V38.6667C33.5 39.5507 33.1488 40.3986 32.5237 41.0237C31.8986 41.6488 31.0507 42 30.1667 42H16.8333C15.9493 42 15.1014 41.6488 14.4763 41.0237C13.8512 40.3986 13.5 39.5507 13.5 38.6667V25.3333C13.5 24.4493 13.8512 23.6014 14.4763 22.9763C15.1014 22.3512 15.9493 22 16.8333 22H18.5","stroke","currentColor","stroke-opacity","0.52","stroke-width","2.5","stroke-linecap","round","stroke-linejoin","round"]],template:function(t,i){if(t&1&&(h(0,"div",3,0),C(2,4),p(3,zWe,26,17,"ng-container",5)(4,YWe,26,17,"ng-container",5),_(),S()),t&2){let a=Ie(1);v("snippylyOverlay",a)("snippylyOverlayZIndex",3e3),m(2),v("ngSwitch",i.type),m(),v("ngSwitchCase","audio"),m(),v("ngSwitchCase","video")}},styles:["html[_ngcontent-%COMP%]{--velt-base-rem-unit: 1}*[data-snippyly-element=true][_ngcontent-%COMP%], *[data-velt-element=true][_ngcontent-%COMP%]{font-family:var(--velt-default-font-family)}velt-wireframe[_ngcontent-%COMP%]{display:none!important}[_nghost-%COMP%]{--velt-green: var(--velt-light-mode-green);--velt-magenta: var(--velt-light-mode-magenta);--velt-amber: var(--velt-light-mode-amber);--velt-purple: var(--velt-light-mode-purple);--velt-cyan: var(--velt-light-mode-cyan);--velt-orange: var(--velt-light-mode-orange);--velt-black: var(--velt-light-mode-black);--velt-white: var(--velt-light-mode-white);--velt-gray: var(--velt-light-mode-gray);--velt-error: var(--velt-light-mode-error);--velt-error-hover: var(--velt-light-mode-error-hover);--velt-error-foreground: var(--velt-light-mode-error-foreground);--velt-error-light: var(--velt-light-mode-error-light);--velt-error-transparent: var(--velt-light-mode-error-transparent);--velt-warning: var(--velt-light-mode-warning);--velt-warning-hover: var(--velt-light-mode-warning-hover);--velt-warning-foreground: var(--velt-light-mode-warning-foreground);--velt-warning-light: var(--velt-light-mode-warning-light);--velt-warning-transparent: var(--velt-light-mode-warning-transparent);--velt-success: var(--velt-light-mode-success);--velt-success-hover: var(--velt-light-mode-success-hover);--velt-success-foreground: var(--velt-light-mode-success-foreground);--velt-success-light: var(--velt-light-mode-success-light);--velt-success-transparent: var(--velt-light-mode-success-transparent);--velt-accent: var(--velt-light-mode-accent);--velt-accent-text: var(--velt-light-mode-accent-text);--velt-accent-hover: var(--velt-light-mode-accent-hover);--velt-accent-foreground: var(--velt-light-mode-accent-foreground);--velt-accent-light: var(--velt-light-mode-accent-light);--velt-accent-transparent: var(--velt-light-mode-accent-transparent);--velt-text-0: var(--velt-light-mode-text-0);--velt-text-1: var(--velt-light-mode-text-1);--velt-text-2: var(--velt-light-mode-text-2);--velt-text-3: var(--velt-light-mode-text-3);--velt-text-4: var(--velt-light-mode-text-4);--velt-text-5: var(--velt-light-mode-text-5);--velt-text-6: var(--velt-light-mode-text-6);--velt-text-7: var(--velt-light-mode-text-7);--velt-text-8: var(--velt-light-mode-text-8);--velt-text-9: var(--velt-light-mode-text-9);--velt-text-10: var(--velt-light-mode-text-10);--velt-text-11: var(--velt-light-mode-text-11);--velt-text-12: var(--velt-light-mode-text-12);--velt-background-0: var(--velt-light-mode-background-0);--velt-background-1: var(--velt-light-mode-background-1);--velt-background-2: var(--velt-light-mode-background-2);--velt-background-3: var(--velt-light-mode-background-3);--velt-background-4: var(--velt-light-mode-background-4);--velt-background-5: var(--velt-light-mode-background-5);--velt-background-6: var(--velt-light-mode-background-6);--velt-background-7: var(--velt-light-mode-background-7);--velt-background-8: var(--velt-light-mode-background-8);--velt-background-9: var(--velt-light-mode-background-9);--velt-background-10: var(--velt-light-mode-background-10);--velt-border-0: var(--velt-light-mode-border-0);--velt-border-1: var(--velt-light-mode-border-1);--velt-border-2: var(--velt-light-mode-border-2);--velt-border-3: var(--velt-light-mode-border-3);--velt-border-4: var(--velt-light-mode-border-4);--velt-border-5: var(--velt-light-mode-border-5);--velt-border-6: var(--velt-light-mode-border-6);--velt-border-7: var(--velt-light-mode-border-7);--velt-border-8: var(--velt-light-mode-border-8);--velt-border-9: var(--velt-light-mode-border-9);--velt-border-10: var(--velt-light-mode-border-10);--velt-background-transparent: var(--velt-light-mode-background-transparent);--velt-border-transparent: var(--velt-light-mode-border-transparent);--velt-animation-transparent: var(--velt-light-mode-animation-transparent)}[dark][_nghost-%COMP%]{--velt-green: var(--velt-dark-mode-green);--velt-magenta: var(--velt-dark-mode-magenta);--velt-amber: var(--velt-dark-mode-amber);--velt-purple: var(--velt-dark-mode-purple);--velt-cyan: var(--velt-dark-mode-cyan);--velt-orange: var(--velt-dark-mode-orange);--velt-black: var(--velt-dark-mode-black);--velt-white: var(--velt-dark-mode-white);--velt-gray: var(--velt-dark-mode-gray);--velt-error: var(--velt-dark-mode-error);--velt-error-hover: var(--velt-dark-mode-error-hover);--velt-error-foreground: var(--velt-dark-mode-error-foreground);--velt-error-light: var(--velt-dark-mode-error-light);--velt-error-transparent: var(--velt-dark-mode-error-transparent);--velt-warning: var(--velt-dark-mode-warning);--velt-warning-hover: var(--velt-dark-mode-warning-hover);--velt-warning-foreground: var(--velt-dark-mode-warning-foreground);--velt-warning-light: var(--velt-dark-mode-warning-light);--velt-warning-transparent: var(--velt-dark-mode-warning-transparent);--velt-success: var(--velt-dark-mode-success);--velt-success-hover: var(--velt-dark-mode-success-hover);--velt-success-foreground: var(--velt-dark-mode-success-foreground);--velt-success-light: var(--velt-dark-mode-success-light);--velt-success-transparent: var(--velt-dark-mode-success-transparent);--velt-accent: var(--velt-dark-mode-accent);--velt-accent-text: var(--velt-dark-mode-accent-text);--velt-accent-hover: var(--velt-dark-mode-accent-hover);--velt-accent-foreground: var(--velt-dark-mode-accent-foreground);--velt-accent-light: var(--velt-dark-mode-accent-light);--velt-accent-transparent: var(--velt-dark-mode-accent-transparent);--velt-text-0: var(--velt-dark-mode-text-0);--velt-text-1: var(--velt-dark-mode-text-1);--velt-text-2: var(--velt-dark-mode-text-2);--velt-text-3: var(--velt-dark-mode-text-3);--velt-text-4: var(--velt-dark-mode-text-4);--velt-text-5: var(--velt-dark-mode-text-5);--velt-text-6: var(--velt-dark-mode-text-6);--velt-text-7: var(--velt-dark-mode-text-7);--velt-text-8: var(--velt-dark-mode-text-8);--velt-text-9: var(--velt-dark-mode-text-9);--velt-text-10: var(--velt-dark-mode-text-10);--velt-text-11: var(--velt-dark-mode-text-11);--velt-text-12: var(--velt-dark-mode-text-12);--velt-background-0: var(--velt-dark-mode-background-0);--velt-background-1: var(--velt-dark-mode-background-1);--velt-background-2: var(--velt-dark-mode-background-2);--velt-background-3: var(--velt-dark-mode-background-3);--velt-background-4: var(--velt-dark-mode-background-4);--velt-background-5: var(--velt-dark-mode-background-5);--velt-background-6: var(--velt-dark-mode-background-6);--velt-background-7: var(--velt-dark-mode-background-7);--velt-background-8: var(--velt-dark-mode-background-8);--velt-background-9: var(--velt-dark-mode-background-9);--velt-background-10: var(--velt-dark-mode-background-10);--velt-border-0: var(--velt-dark-mode-border-0);--velt-border-1: var(--velt-dark-mode-border-1);--velt-border-2: var(--velt-dark-mode-border-2);--velt-border-3: var(--velt-dark-mode-border-3);--velt-border-4: var(--velt-dark-mode-border-4);--velt-border-5: var(--velt-dark-mode-border-5);--velt-border-6: var(--velt-dark-mode-border-6);--velt-border-7: var(--velt-dark-mode-border-7);--velt-border-8: var(--velt-dark-mode-border-8);--velt-border-9: var(--velt-dark-mode-border-9);--velt-border-10: var(--velt-dark-mode-border-10);--velt-background-transparent: var(--velt-dark-mode-background-transparent);--velt-border-transparent: var(--velt-dark-mode-border-transparent);--velt-animation-transparent: var(--velt-dark-mode-animation-transparent)} .velt-mat-dialog-container.velt-device-permission-denied-dialog--panel mat-dialog-container .mat-mdc-dialog-surface.mdc-dialog__surface{padding:0;background-color:transparent;box-shadow:none;overflow:unset}.velt-device-permission-denied-dialog[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:var(--velt-spacing-lg);align-items:center;justify-content:center;padding:4rem;box-sizing:border-box;word-break:break-word;max-width:600px;max-height:400px;text-align:center;background-color:var(--velt-background-0);border-radius:var(--velt-border-radius-2xl);box-shadow:0 calc((4rem + 0px) * var(--velt-base-rem-unit)) calc((4rem + 0px) * var(--velt-base-rem-unit)) calc((-3rem + 0px) * var(--velt-base-rem-unit)) #1f2f461f}.velt-device-permission-denied-dialog[_ngcontent-%COMP%] .velt-device-permission-denied-dialog--icon[_ngcontent-%COMP%]{color:var(--velt-error)}.velt-device-permission-denied-dialog[_ngcontent-%COMP%] .velt-device-permission-denied-dialog--header[_ngcontent-%COMP%]{font-size:var(--velt-font-size-lg);font-weight:600;line-height:36px;letter-spacing:-.02em;text-align:center;color:var(--velt-text-0)}.velt-device-permission-denied-dialog[_ngcontent-%COMP%] .velt-device-permission-denied-dialog--content[_ngcontent-%COMP%]{font-size:var(--velt-font-size-sm);font-weight:400;line-height:21px;text-align:center;color:var(--velt-text-0)}.velt-device-permission-denied-dialog[_ngcontent-%COMP%] .velt-device-permission-denied-dialog--content[_ngcontent-%COMP%] .velt-device-permission-denied-dialog--page-info-icon[_ngcontent-%COMP%]{margin-left:var(--velt-spacing-sm);margin-right:var(--velt-spacing-sm);color:var(--velt-error)}"],changeDetection:0});let n=o;return n})();var gv=(()=>{let o=class o{constructor(e,t){this.loggingService=e,this.matDialog=t,this.audioPermissionState$=new Se(null),this.videoPermissionState$=new Se(null);try{this.loggingService.log("%c[WB] Creating CLASS: DevicePermissionService","color: blue;"),this.checkPermissions()}catch(i){this.loggingService.catch("Error in DevicePermissionService constructor: ",i)}}checkPermissions(){try{this.loggingService.log("%c[WB] Calling DevicePermissionService FUNCTION: checkPermissions","color: green;"),new ur().browserName!=="Firefox"&&(navigator.permissions.query({name:"microphone"}).then(t=>{this.audioPermissionState$.next(t.state),t.onchange=()=>{this.audioPermissionState$.next(t.state)}}).catch(t=>{}),navigator.permissions.query({name:"camera"}).then(t=>{this.videoPermissionState$.next(t.state),t.onchange=()=>{this.videoPermissionState$.next(t.state)}}).catch(t=>{}))}catch(e){this.loggingService.catch("Error in DevicePermissionService checkPermissions: ",e)}}getPermissionState$(e){try{switch(this.loggingService.log("%c[WB] Calling DevicePermissionService FUNCTION: getPermissionState$","color: green;"),e){case"audio":return this.getAudioPermissionState$();case"video":return this.getVideoPermissionState$();default:return le(null)}}catch(t){return this.loggingService.catch("Error in DevicePermissionService getPermissionState$: ",t),le(null)}}getAudioPermissionState$(){return this.audioPermissionState$.asObservable()}getVideoPermissionState$(){return this.videoPermissionState$.asObservable()}openDevicePermissionDeniedDialog(e,t){try{this.loggingService.log("%c[WB] Calling DevicePermissionService FUNCTION: openDevicePermissionDeniedDialog","color: green;"),this.matDialog.open(jL,{panelClass:["velt-device-permission-denied-dialog--panel","velt-mat-dialog-container"],backdropClass:["velt-device-permission-denied-dialog--backdrop","s-background-blur-1"],data:f({type:e},t||{})})}catch(i){this.loggingService.catch("Error in DevicePermissionService openDevicePermissionDeniedDialog: ",i)}}};o.\u0275fac=function(t){return new(t||o)(X(x),X(Fo))},o.\u0275prov=Me({token:o,factory:o.\u0275fac,providedIn:"root"});let n=o;return n})();var KWe=()=>["video","screen"];function ZWe(n,o){if(n&1&&D(0,"app-recording-preview-steps-dialog-video",4),n&2){let r=c(2);v("componentConfigSignal",r.componentConfigSignal)}}function JWe(n,o){if(n&1&&D(0,"app-recording-preview-steps-dialog-audio",4),n&2){let r=c(2);v("componentConfigSignal",r.componentConfigSignal)}}function XWe(n,o){if(n&1&&(C(0),h(1,"div",2,0),p(3,ZWe,1,1,"app-recording-preview-steps-dialog-video",3)(4,JWe,1,1,"app-recording-preview-steps-dialog-audio",3),S(),_()),n&2){let r=o.ngIf,e=Ie(2),t=c();m(),v("snippylyOverlay",e)("snippylyOverlayZIndex",2e3),T("aria-label","Recording preview - "+r.type+" mode")("data-testid",t.componentId),m(2),v("ngIf",Et(6,KWe).includes(r.type)),m(),v("ngIf",r.type==="audio")}}var $L=(()=>{let o=class o{constructor(e,t,i,a,l,s,d){this.loggingService=e,this.recorderService=t,this.dialog=i,this.devicePermissionService=a,this.dialogRef=l,this.elementRef=s,this.data=d,this.darkMode=!1,this.shadowDom=!0,this.startCountdownFrom=3,this.defaultMediaSourceOptions=Qd(),this.recordingCountdownEnabled=!1,this.subscriptions=[],this.veltElement=!0,this.componentId="velt-recording-preview-steps-dialog",this.componentConfigSignal=Ae({closeDialog:this.closeDialog.bind(this),startCountdown:this.startCountdown.bind(this),toggleAudio:this.toggleAudio.bind(this),toggleVideo:this.toggleVideo.bind(this),toggleSettings:this.toggleSettings.bind(this),cancelCountdown:this.cancelCountdown.bind(this),updateMediaConfig:this.updateMediaConfig.bind(this),handleOverlayClick:this.handleOverlayClick.bind(this),countdownStarted:!1,mediaConfig:{audio:{enabled:!1},video:{enabled:!1}},mediaState:{audio:{enabled:!1},video:{enabled:!1}},type:"video",countdown:this.startCountdownFrom,mediaStream:void 0,isSettingsOpen:!1,darkMode:this.darkMode,shadowDom:this.shadowDom,isExplicitShadowDom:!1});try{this.devicePermissionService.getPermissionState$("video").subscribe(g=>{this.componentConfigSignal.update(u=>(u=k(f({},u),{mediaState:k(f({},u.mediaState),{video:{enabled:g!=="denied"}})}),u))}),this.devicePermissionService.getPermissionState$("audio").subscribe(g=>{this.componentConfigSignal.update(u=>(u=k(f({},u),{mediaState:k(f({},u.mediaState),{audio:{enabled:g!=="denied"}})}),u))}),this.subscriptions.push(this.recorderService.getRecordingCountdownEnabled$().subscribe(g=>{this.recordingCountdownEnabled=g})),this.subscriptions.push(this.recorderService.getRecordingMicEnabled$().subscribe(g=>{g!==null&&(g?this.toggleAudioOn():this.toggleAudioOff())})),d&&(d.type&&this.componentConfigSignal.update(g=>(g=k(f({},g),{type:d.type}),g)),d.recordingCountdown!==void 0&&(this.recordingCountdownEnabled=!!d.recordingCountdown),d.mediaConfig&&(d.mediaConfig?.audio?.enabled&&!d.mediaConfig?.audio?.deviceId&&(d.mediaConfig.audio.deviceId=this.defaultMediaSourceOptions?.selectedAudioDevice?.deviceId),d.mediaConfig?.video?.enabled&&!d.mediaConfig?.video?.deviceId&&(d.mediaConfig.video.deviceId=this.defaultMediaSourceOptions?.selectedVideoDevice?.deviceId),d?.darkMode?this.elementRef.nativeElement.setAttribute("dark",""):this.elementRef.nativeElement.removeAttribute("dark"),this.componentConfigSignal.update(g=>(g=k(f({},g),{shadowDom:d?.shadowDom!==!1,isExplicitShadowDom:!!d?.isExplicitShadowDom,darkMode:d.darkMode||!1}),g)),this.updateMediaConfig(d.mediaConfig)))}catch(g){this.loggingService.catch("Error in RecordingPreviewStepsDialogComponent constructor: ",g)}}ngOnInit(){try{this.setupA11yAttributes(),this.componentConfigSignal().type==="screen"&&this.subscriptions.push(this.recorderService.getScreenStream$().subscribe(e=>{e&&e.active&&e.getVideoTracks().some(t=>t.readyState==="live")&&this.componentConfigSignal.update(t=>(t=f({},t),t.mediaConfig.screen={enabled:!0,stream:e},t))}))}catch(e){this.loggingService.catch("Error in RecordingPreviewStepsDialogComponent ngOnInit:",e)}}setupA11yAttributes(){try{let e=this.elementRef.nativeElement;e.setAttribute("data-testid",this.componentId+"-container"),e.setAttribute("role","dialog"),e.setAttribute("aria-label","Recording preview steps dialog")}catch(e){this.loggingService.catch("Error in RecordingPreviewStepsDialogComponent setupA11yAttributes:",e)}}ngOnChanges(e){try{e&&Object.keys(e).forEach(t=>{this.componentConfigSignal.update(i=>(i=k(f({},i),{[t]:e[t].currentValue}),i))})}catch(t){this.loggingService.catch("Error in RecordingPreviewStepsDialogComponent ngOnChanges: ",t)}}ngAfterViewInit(){try{this.dialogRef.addPanelClass("snippyly-recording-preview-steps-dialog"),this.dialogRef.disableClose=!0}catch(e){this.loggingService.catch("Error in RecordingPreviewStepsDialogComponent ngAfterViewInit: ",e)}}toggleSettings(e){try{e.stopPropagation(),this.componentConfigSignal.update(t=>(t=k(f({},t),{isSettingsOpen:!t.isSettingsOpen}),t))}catch(t){this.loggingService.catch("Error in RecordingPreviewStepsDialogComponent toggleSettings: ",t)}}toggleAudio(){try{this.componentConfigSignal().mediaConfig.audio||this.componentConfigSignal.update(i=>(i=k(f({},i),{mediaConfig:k(f({},i.mediaConfig),{audio:{enabled:!0}})}),i));let e=!this.componentConfigSignal().mediaConfig.audio?.enabled;this.componentConfigSignal.update(i=>(i=k(f({},i),{mediaConfig:k(f({},i.mediaConfig),{audio:{enabled:e}})}),i));let t=this.componentConfigSignal().mediaStream?.getAudioTracks()[0];t?t.enabled=e:e&&(this.componentConfigSignal.update(i=>(i=k(f({},i),{mediaConfig:k(f({},i.mediaConfig),{audio:k(f({},i.mediaConfig.audio),{deviceId:this.defaultMediaSourceOptions?.selectedAudioDevice?.deviceId})})}),i)),this.updateMediaConfig(this.componentConfigSignal().mediaConfig))}catch(e){this.loggingService.catch("Error in RecordingPreviewStepsDialogComponent toggleAudio: ",e)}}toggleAudioOn(){try{this.componentConfigSignal.update(t=>(t=k(f({},t),{mediaConfig:k(f({},t.mediaConfig),{audio:{enabled:!0}})}),t));let e=this.componentConfigSignal().mediaStream?.getAudioTracks()[0];e?e.enabled=!0:(this.componentConfigSignal.update(t=>(t=k(f({},t),{mediaConfig:k(f({},t.mediaConfig),{audio:k(f({},t.mediaConfig.audio),{deviceId:this.defaultMediaSourceOptions?.selectedAudioDevice?.deviceId})})}),t)),this.updateMediaConfig(this.componentConfigSignal().mediaConfig))}catch(e){this.loggingService.catch("Error in RecordingPreviewStepsDialogComponent toggleAudioOn: ",e)}}toggleAudioOff(){try{this.componentConfigSignal.update(t=>(t=k(f({},t),{mediaConfig:k(f({},t.mediaConfig),{audio:{enabled:!1}})}),t));let e=this.componentConfigSignal().mediaStream?.getAudioTracks()[0];e&&(e.enabled=!1)}catch(e){this.loggingService.catch("Error in RecordingPreviewStepsDialogComponent toggleAudioOn: ",e)}}toggleVideo(){try{this.componentConfigSignal.update(e=>(e=f({},e),e.mediaConfig.video||(e.mediaConfig.video={enabled:!0}),e.mediaConfig.video.enabled=!e.mediaConfig.video.enabled,e.mediaConfig.video.deviceId=this.defaultMediaSourceOptions?.selectedVideoDevice?.deviceId,e)),this.updateMediaConfig(this.componentConfigSignal().mediaConfig)}catch(e){this.loggingService.catch("Error in RecordingPreviewStepsDialogComponent toggleVideo: ",e)}}updateMediaConfig(e){try{this.stopMediaStream(),this.getMediaStream(e)}catch(t){this.loggingService.catch("Error in RecordingPreviewStepsDialogComponent updateMediaConfig: ",t)}}getMediaStream(e){try{if(!navigator.mediaDevices){this.loggingService.catch("Error in RecordingPreviewStepsDialogComponent getMediaStream: ","No media devices");return}if(!navigator.mediaDevices.getUserMedia){this.loggingService.catch("Error in RecordingPreviewStepsDialogComponent getMediaStream: ","No getUserMedia");return}if(e.audio?.enabled||e.video?.enabled){let t=$_e(e);navigator.mediaDevices.getUserMedia(t).then(i=>{this.componentConfigSignal.update(a=>(a=k(f({},a),{mediaConfig:e,mediaStream:i}),a))}).catch(i=>{this.loggingService.catch("Error in RecordingPreviewStepsDialogComponent getMediaStream catch: ",i)})}else this.componentConfigSignal.update(t=>(t=k(f({},t),{mediaStream:void 0,mediaConfig:e}),t))}catch(t){this.loggingService.catch("Error in RecordingPreviewStepsDialogComponent getMediaStream: ",t)}}stopMediaStream(){try{this.componentConfigSignal.update(e=>(e=f({},e),e.mediaStream?.getTracks().forEach(t=>{t.stop()}),e.mediaStream=void 0,e))}catch(e){this.loggingService.catch("Error in RecordingPreviewStepsDialogComponent stopMediaStream: ",e)}}startCountdown(){return Q(this,null,function*(){try{let t=new ur().getBrowserName()==="Firefox",i=null;if(t&&this.componentConfigSignal().type==="screen")try{let a=this.componentConfigSignal().mediaConfig,l=$_e(a);Object.keys(l).length>0&&(i=yield navigator.mediaDevices.getUserMedia(l))}catch(a){this.loggingService.catch("Error getting Firefox user media stream:",a),i=null}if(this.componentConfigSignal().type==="screen"){if(!this.componentConfigSignal().mediaConfig.screen?.stream)try{let l=yield navigator.mediaDevices.getDisplayMedia({video:!0,audio:!0});this.componentConfigSignal.update(s=>(s=f({},s),s.mediaConfig.screen={enabled:!0,stream:l},s))}catch(l){this.loggingService.catch("Error getting screen media stream:",l),this.cancelCountdown();return}this.componentConfigSignal.update(l=>(l=f({},l),i&&(l.mediaConfig.audio?.enabled&&(l.mediaConfig.audio.stream=i),l.mediaConfig.video?.enabled&&(l.mediaConfig.video.stream=i)),l)),this.componentConfigSignal().mediaConfig.screen?.stream?.getTracks().forEach(l=>{l&&(l.onended=()=>{this.cancelCountdown()})})}this.recordingCountdownEnabled?(this.componentConfigSignal.update(a=>(a=k(f({},a),{countdownStarted:!0}),a)),this.countdownInterval=setInterval(()=>{this.componentConfigSignal().countdown>1?this.componentConfigSignal.update(a=>(a=k(f({},a),{countdown:a.countdown-1}),a)):this.closeDialog(this.componentConfigSignal().mediaConfig)},1e3)):this.closeDialog(this.componentConfigSignal().mediaConfig)}catch(e){this.loggingService.catch("Error in RecordingPreviewStepsDialogComponent startCountdown: ",e)}})}cancelCountdown(){try{if(this.componentConfigSignal.update(e=>(e=k(f({},e),{countdownStarted:!1,countdown:this.startCountdownFrom}),e)),this.clearInterval(),this.componentConfigSignal().type==="screen"){let e=this.componentConfigSignal().mediaConfig.screen?.stream;e&&e.getTracks().forEach(t=>{t.stop()}),this.componentConfigSignal.update(t=>(t=f({},t),t.mediaConfig.screen=void 0,t))}}catch(e){this.loggingService.catch("Error in RecordingPreviewStepsDialogComponent cancelCountdown: ",e)}}closeDialog(e){return Q(this,null,function*(){try{this.clearInterval(),e||(this.stopMediaStream(),this.componentConfigSignal.update(t=>(t=f({},t),t.mediaConfig&&(t.mediaConfig.screen?.stream&&(t.mediaConfig.screen.stream.getTracks().forEach(i=>i.stop()),t.mediaConfig.screen.stream=void 0),t.mediaConfig.audio?.stream&&(t.mediaConfig.audio.stream.getTracks().forEach(i=>i.stop()),t.mediaConfig.audio.stream=void 0),t.mediaConfig.video?.stream&&(t.mediaConfig.video.stream.getTracks().forEach(i=>i.stop()),t.mediaConfig.video.stream=void 0)),t))),this.dialogRef.close(e)}catch(t){this.loggingService.catch("Error in RecordingPreviewStepsDialogComponent closeDialog: ",t)}})}handleOverlayClick(e){try{this.componentConfigSignal.update(t=>(t=k(f({},t),{isSettingsOpen:!1}),t)),e.stopPropagation()}catch(t){this.loggingService.catch("Error in RecordingPreviewStepsDialogComponent handleOverlayClick: ",t)}}clearInterval(){try{this.countdownInterval&&(clearInterval(this.countdownInterval),this.countdownInterval=void 0)}catch(e){this.loggingService.catch("Error in RecordingPreviewStepsDialogComponent clearInterval: ",e)}}ngOnDestroy(){try{this.clearInterval(),this.stopMediaStream(),this.subscriptions.forEach(e=>{e?.unsubscribe()})}catch(e){this.loggingService.catch("Error in RecordingPreviewStepsDialogComponent ngOnDestroy: ",e)}}};o.\u0275fac=function(t){return new(t||o)(y(x),y(Fn),y(Fo),y(gv),y(Vi),y(Z),y(Yc,8))},o.\u0275cmp=O({type:o,selectors:[["snippyly-recording-preview-steps-dialog"]],hostVars:1,hostBindings:function(t,i){t&2&&T("data-velt-element",i.veltElement)},inputs:{darkMode:"darkMode",shadowDom:"shadowDom"},standalone:!1,features:[st],decls:1,vars:1,consts:[["recordingPreviewDialogRef",""],[4,"ngIf"],["role","dialog","aria-modal","true",3,"snippylyOverlay","snippylyOverlayZIndex"],[3,"componentConfigSignal",4,"ngIf"],[3,"componentConfigSignal"]],template:function(t,i){t&1&&p(0,XWe,5,7,"ng-container",1),t&2&&v("ngIf",i.componentConfigSignal())},styles:["html[_ngcontent-%COMP%]{--velt-base-rem-unit: 1}*[data-snippyly-element=true][_ngcontent-%COMP%], *[data-velt-element=true][_ngcontent-%COMP%]{font-family:var(--velt-default-font-family)}velt-wireframe[_ngcontent-%COMP%]{display:none!important}[_nghost-%COMP%]{--velt-green: var(--velt-light-mode-green);--velt-magenta: var(--velt-light-mode-magenta);--velt-amber: var(--velt-light-mode-amber);--velt-purple: var(--velt-light-mode-purple);--velt-cyan: var(--velt-light-mode-cyan);--velt-orange: var(--velt-light-mode-orange);--velt-black: var(--velt-light-mode-black);--velt-white: var(--velt-light-mode-white);--velt-gray: var(--velt-light-mode-gray);--velt-error: var(--velt-light-mode-error);--velt-error-hover: var(--velt-light-mode-error-hover);--velt-error-foreground: var(--velt-light-mode-error-foreground);--velt-error-light: var(--velt-light-mode-error-light);--velt-error-transparent: var(--velt-light-mode-error-transparent);--velt-warning: var(--velt-light-mode-warning);--velt-warning-hover: var(--velt-light-mode-warning-hover);--velt-warning-foreground: var(--velt-light-mode-warning-foreground);--velt-warning-light: var(--velt-light-mode-warning-light);--velt-warning-transparent: var(--velt-light-mode-warning-transparent);--velt-success: var(--velt-light-mode-success);--velt-success-hover: var(--velt-light-mode-success-hover);--velt-success-foreground: var(--velt-light-mode-success-foreground);--velt-success-light: var(--velt-light-mode-success-light);--velt-success-transparent: var(--velt-light-mode-success-transparent);--velt-accent: var(--velt-light-mode-accent);--velt-accent-text: var(--velt-light-mode-accent-text);--velt-accent-hover: var(--velt-light-mode-accent-hover);--velt-accent-foreground: var(--velt-light-mode-accent-foreground);--velt-accent-light: var(--velt-light-mode-accent-light);--velt-accent-transparent: var(--velt-light-mode-accent-transparent);--velt-text-0: var(--velt-light-mode-text-0);--velt-text-1: var(--velt-light-mode-text-1);--velt-text-2: var(--velt-light-mode-text-2);--velt-text-3: var(--velt-light-mode-text-3);--velt-text-4: var(--velt-light-mode-text-4);--velt-text-5: var(--velt-light-mode-text-5);--velt-text-6: var(--velt-light-mode-text-6);--velt-text-7: var(--velt-light-mode-text-7);--velt-text-8: var(--velt-light-mode-text-8);--velt-text-9: var(--velt-light-mode-text-9);--velt-text-10: var(--velt-light-mode-text-10);--velt-text-11: var(--velt-light-mode-text-11);--velt-text-12: var(--velt-light-mode-text-12);--velt-background-0: var(--velt-light-mode-background-0);--velt-background-1: var(--velt-light-mode-background-1);--velt-background-2: var(--velt-light-mode-background-2);--velt-background-3: var(--velt-light-mode-background-3);--velt-background-4: var(--velt-light-mode-background-4);--velt-background-5: var(--velt-light-mode-background-5);--velt-background-6: var(--velt-light-mode-background-6);--velt-background-7: var(--velt-light-mode-background-7);--velt-background-8: var(--velt-light-mode-background-8);--velt-background-9: var(--velt-light-mode-background-9);--velt-background-10: var(--velt-light-mode-background-10);--velt-border-0: var(--velt-light-mode-border-0);--velt-border-1: var(--velt-light-mode-border-1);--velt-border-2: var(--velt-light-mode-border-2);--velt-border-3: var(--velt-light-mode-border-3);--velt-border-4: var(--velt-light-mode-border-4);--velt-border-5: var(--velt-light-mode-border-5);--velt-border-6: var(--velt-light-mode-border-6);--velt-border-7: var(--velt-light-mode-border-7);--velt-border-8: var(--velt-light-mode-border-8);--velt-border-9: var(--velt-light-mode-border-9);--velt-border-10: var(--velt-light-mode-border-10);--velt-background-transparent: var(--velt-light-mode-background-transparent);--velt-border-transparent: var(--velt-light-mode-border-transparent);--velt-animation-transparent: var(--velt-light-mode-animation-transparent)}[dark][_nghost-%COMP%]{--velt-green: var(--velt-dark-mode-green);--velt-magenta: var(--velt-dark-mode-magenta);--velt-amber: var(--velt-dark-mode-amber);--velt-purple: var(--velt-dark-mode-purple);--velt-cyan: var(--velt-dark-mode-cyan);--velt-orange: var(--velt-dark-mode-orange);--velt-black: var(--velt-dark-mode-black);--velt-white: var(--velt-dark-mode-white);--velt-gray: var(--velt-dark-mode-gray);--velt-error: var(--velt-dark-mode-error);--velt-error-hover: var(--velt-dark-mode-error-hover);--velt-error-foreground: var(--velt-dark-mode-error-foreground);--velt-error-light: var(--velt-dark-mode-error-light);--velt-error-transparent: var(--velt-dark-mode-error-transparent);--velt-warning: var(--velt-dark-mode-warning);--velt-warning-hover: var(--velt-dark-mode-warning-hover);--velt-warning-foreground: var(--velt-dark-mode-warning-foreground);--velt-warning-light: var(--velt-dark-mode-warning-light);--velt-warning-transparent: var(--velt-dark-mode-warning-transparent);--velt-success: var(--velt-dark-mode-success);--velt-success-hover: var(--velt-dark-mode-success-hover);--velt-success-foreground: var(--velt-dark-mode-success-foreground);--velt-success-light: var(--velt-dark-mode-success-light);--velt-success-transparent: var(--velt-dark-mode-success-transparent);--velt-accent: var(--velt-dark-mode-accent);--velt-accent-text: var(--velt-dark-mode-accent-text);--velt-accent-hover: var(--velt-dark-mode-accent-hover);--velt-accent-foreground: var(--velt-dark-mode-accent-foreground);--velt-accent-light: var(--velt-dark-mode-accent-light);--velt-accent-transparent: var(--velt-dark-mode-accent-transparent);--velt-text-0: var(--velt-dark-mode-text-0);--velt-text-1: var(--velt-dark-mode-text-1);--velt-text-2: var(--velt-dark-mode-text-2);--velt-text-3: var(--velt-dark-mode-text-3);--velt-text-4: var(--velt-dark-mode-text-4);--velt-text-5: var(--velt-dark-mode-text-5);--velt-text-6: var(--velt-dark-mode-text-6);--velt-text-7: var(--velt-dark-mode-text-7);--velt-text-8: var(--velt-dark-mode-text-8);--velt-text-9: var(--velt-dark-mode-text-9);--velt-text-10: var(--velt-dark-mode-text-10);--velt-text-11: var(--velt-dark-mode-text-11);--velt-text-12: var(--velt-dark-mode-text-12);--velt-background-0: var(--velt-dark-mode-background-0);--velt-background-1: var(--velt-dark-mode-background-1);--velt-background-2: var(--velt-dark-mode-background-2);--velt-background-3: var(--velt-dark-mode-background-3);--velt-background-4: var(--velt-dark-mode-background-4);--velt-background-5: var(--velt-dark-mode-background-5);--velt-background-6: var(--velt-dark-mode-background-6);--velt-background-7: var(--velt-dark-mode-background-7);--velt-background-8: var(--velt-dark-mode-background-8);--velt-background-9: var(--velt-dark-mode-background-9);--velt-background-10: var(--velt-dark-mode-background-10);--velt-border-0: var(--velt-dark-mode-border-0);--velt-border-1: var(--velt-dark-mode-border-1);--velt-border-2: var(--velt-dark-mode-border-2);--velt-border-3: var(--velt-dark-mode-border-3);--velt-border-4: var(--velt-dark-mode-border-4);--velt-border-5: var(--velt-dark-mode-border-5);--velt-border-6: var(--velt-dark-mode-border-6);--velt-border-7: var(--velt-dark-mode-border-7);--velt-border-8: var(--velt-dark-mode-border-8);--velt-border-9: var(--velt-dark-mode-border-9);--velt-border-10: var(--velt-dark-mode-border-10);--velt-background-transparent: var(--velt-dark-mode-background-transparent);--velt-border-transparent: var(--velt-dark-mode-border-transparent);--velt-animation-transparent: var(--velt-dark-mode-animation-transparent)} .velt-mat-dialog-container.snippyly-recording-preview-steps-dialog{max-width:none} .velt-mat-dialog-container.snippyly-recording-preview-steps-dialog mat-dialog-container .mat-mdc-dialog-surface.mdc-dialog__surface{background:transparent;padding:0;margin:0;border-radius:var(--velt-border-radius-lg)}"],changeDetection:0});let n=o;return n})();function $_e(n){try{let o={};return n.audio?.enabled&&(o.audio={deviceId:n.audio.deviceId?{exact:n.audio.deviceId}:void 0}),n.video?.enabled&&(o.video={deviceId:n.video.deviceId?{exact:n.video.deviceId}:void 0}),o}catch{return{}}}var Kl=(()=>{let o=class o{constructor(e){this.loggingService=e,this.isPipActive$=new Se(!1),this.pipStopRecordingTriggered$=new Se(!1),this.pipPauseRecordingTriggered$=new Se(!1),this.pictureInPicture$=new Se(!1),this.pipClearRecordingTriggered$=new Se(!1)}getPipClearRecordingTriggered$(){return this.pipClearRecordingTriggered$.asObservable()}resetPipClearRecordingTriggered(){this.pipClearRecordingTriggered$.next(!1)}openPictureInPicture(e,t){return Q(this,null,function*(){try{if(!this.isPictureInPictureEnabled()||!e||document.pictureInPictureElement||window.documentPictureInPicture?.window)return;if("documentPictureInPicture"in window){yield this.createDocumentPip(e,t);return}if(document.pictureInPictureEnabled){let i=yield this.findVideoElement();if(!i){this.loggingService.warn("No video element found for Picture-in-Picture");return}yield i.requestPictureInPicture(),this.isPipActive$.next(!0);return}}catch(i){this.loggingService.catch("Error in PipService openPictureInPicture:",i)}})}createDocumentPip(e,t){return Q(this,null,function*(){try{let i=window.documentPictureInPicture;this.pipWindow=yield i.requestWindow({width:320,height:288}),yield this.addStylesToPip(),yield this.createControlPanelInPip(e,t),this.pipWindow?.addEventListener("unload",()=>{try{this.isPipActive$.next(!1),this.pipWindow=void 0}catch(a){this.loggingService.catch("Error in PipService createDocumentPip unload:",a)}}),this.isPipActive$.next(!0)}catch{this.isPipActive$.next(!1),this.pipWindow=void 0}})}addStylesToPip(){return Q(this,null,function*(){try{if(!this.pipWindow)return;this.pipWindow.document.body.style.margin="0",this.pipWindow.document.body.style.padding="0",this.pipWindow.document.body.style.backgroundColor="#000",this.pipWindow.document.body.style.display="flex",this.pipWindow.document.body.style.alignItems="center",this.pipWindow.document.body.style.justifyContent="center"}catch(e){this.loggingService.catch("Error in PipService copyStylesToPip:",e)}})}createControlPanelInPip(e,t){return Q(this,null,function*(){if(this.pipWindow)try{let i=this.pipWindow.document.createElement("div");i.style.cssText=`
|
|
408
|
+
`},o.GIF_PATHS={CAT_JAM:"https://firebasestorage.googleapis.com/v0/b/snippyly-sdk-external/o/emojis%2Fcatjam.gif?alt=media&token=9868b4ec-0031-4751-bb2e-47bf0f9d9583"},o.\u0275fac=function(t){return new(t||o)(X(Be),X(x),X(Rd))},o.\u0275prov=Me({token:o,factory:o.\u0275fac,providedIn:"root"});let n=o;return n})();var dn=(()=>{let o=class o{constructor(e,t,i,a,l,s,d,g,u){this.analyticsService=e,this.authService=t,this.configService=i,this.coreActionsService=a,this.databaseService=l,this.docService=s,this.loggingService=d,this.commonDbService=g,this.usersService=u,this.db=null,this.internalUserContacts$=new Se([]),this.userGlobalContact$=new Se(!1),this.userGroupContact$=new Se(null),this.users$=new Se([]),this.userPersonalContacts=[],this.userGroupContacts=[],this.userGlobalContacts=[],this.users=[],this.documentPaths=null,this.userAccessFields$=new Se({}),this.userOrganizationContacts$=new Se([]),this.userFolderContacts$=new Se([]),this.userDocumentContacts$=new Se([]),this.userOrganizationGroups$=new Se([]),this.onContactSelectedSubject$=new it,this.documentAccessType=null,this.atHereEnabled$=new Se(!1),this.atHereLabel$=new Se("here"),this.atHereDescription$=new Se(null),this.contactListScopeForOrganizationUsers$=new Se([fo.ALL]),this.customUserContacts$=new Se(null),this.customUserContactsConfig$=new Se({merge:!1}),this.currentOrganizationUserIAM$=new Se(null),this.userContacts$=new Se([]),this.userSnippylyIdContacts$=new Se(null),this.usersByOrganizationId$=new Se({}),this.temporaryUserIds$=new Se([]),this.usersByOrganizationIdAndDocumentId$=new Se({}),this.usersByOrganizationIdAndFolderId$=new Se({}),this.userById$=new Se({}),this.searchUsersSubject$=new it,this.searchUsersDebounceTime=300,this.pendingSearchPromises=new Map,this.authService.setContactService(this),this.usersService.setContactService(this),this.authService.getUser$().pipe(_e(b=>this.docService.getDocumentPaths$().pipe(on(E=>{this.documentPaths=E}),ue(()=>b)))).subscribe(b=>Q(this,null,function*(){if(this.user=b,b&&this.documentPaths)if(!b?.organizationId)this.getLoggedInUsers$().subscribe(),this.getUserContactsFromDb$(),yield this.migrateLoggedInUserFromEmailToUserIdPath(b),this.setLoggedInUser(b),yield this.moveGlobalContactUserFromEmailToUserIdPath(b),this.updateUserInGlobalContactsIfAvailable(b),b?.groupId&&(yield this.migrateGroupContactsFromEmailToUserIdPath(b?.groupId)),this.checkToSetLoggedInUserInGroupContacts();else{let E=this.userPermissionService?.getCurrentUserPermissions(),A=this.documentPaths.folderId,M=!0;A&&E?.[b?.userId]?.folders?.[A]?.errorCode===_o.PERMISSION_DENIED&&(M=!1),this.getOrganizationContactsFromDb$(),M&&this.getFolderContactsFromDb$(),this.getDocumentContactsFromDb$(),this.getOrganizationGroupsFromDb$(),this.getTemporaryUsers()}else this.getUserContactSubscription?.unsubscribe(),this.getUserContactSubscription=void 0,this.getLoggedInUsersSubscription?.unsubscribe(),this.getLoggedInUsersSubscription=void 0,this.getOrganizationContactsSubscription?.unsubscribe(),this.getOrganizationContactsSubscription=void 0,this.getFolderContactsSubscription?.unsubscribe(),this.getFolderContactsSubscription=void 0,this.getDocumentContactsSubscription?.unsubscribe(),this.getDocumentContactsSubscription=void 0,this.getOrganizationGroupsSubscription?.unsubscribe(),this.getOrganizationGroupsSubscription=void 0}),b=>{this.loggingService.catch("Error in ContactService constructor getUser$: ",b)}),this.databaseService.getDb().pipe($e(b=>!!b),ut(1)).subscribe(b=>{b&&(this.db=b)},b=>{this.loggingService.catch("Error in ContactService constructor getDb: ",b)}),this.getOrganizationGroups$().subscribe(b=>{this.authService.setOrganizationUserGroups(b)}),pn([this.getInternalUserContacts$(),this.getCustomUserContacts$(),this.getCustomUserContactsConfig$()]).subscribe(([b,E,A])=>{E?A?.merge?this.userContacts$.next([...b||[],...E||[]]):this.userContacts$.next(E||[]):this.userContacts$.next(b||[])}),this.getUserContacts$().subscribe(b=>{try{b?.forEach(E=>{let A=E?.userSnippylyId||Qc(this.configService.getApiKey(),E.userId);A&&this.userSnippylyIdContacts$.next(k(f({},this.userSnippylyIdContacts$.value),{[A]:E}))})}catch{}})}setCommentService(e){try{this.commentService=e}catch(t){this.loggingService.catch("Error in ContactService setCommentService: ",t)}}setUserPermissionService(e){try{this.userPermissionService=e}catch(t){this.loggingService.catch("Error in ContactService setUserPermissionService: ",t)}}clearCache(){this.loggingService.log("%c[WB] Calling FUNCTION: clearCache in ContactService","color: green;");try{this.documentPaths=null,this.usersByOrganizationId$.next({}),this.temporaryUserIds$.next([]),this.usersByOrganizationIdAndFolderId$.next({}),this.usersByOrganizationIdAndDocumentId$.next({}),this.userById$.next({}),this.userOrganizationContacts$.next([]),this.userFolderContacts$.next([]),this.userDocumentContacts$.next([]),this.userOrganizationGroups$.next([]),this.userContacts$.next([]),this.userSnippylyIdContacts$.next(null),this.userGlobalContact$.next(!1),this.userGroupContact$.next(null),this.users$.next([]),this.userPersonalContacts=[],this.userGroupContacts=[],this.userGlobalContacts=[],this.users=[],this.currentOrganizationUserIAM$.next(null)}catch(e){this.loggingService.catch("Error in ContactService clearCache: ",e)}}setDocumentAccessType(e){try{this.documentAccessType=e}catch(t){this.loggingService.catch("Error in ContactService setDocumentAccessType: ",t)}}checkIfUserGlobalContact(e){return Q(this,null,function*(){try{if(e?.userId&&this.documentPaths?.globalContacts){let t=yield this.commonDbService?.getData({feature:"globalContacts",properties:{documentId:this.documentPaths?.documentId??"",organizationId:this.documentPaths?.organizationId??"",userId:It(e?.userId),skipFirestore:!0}});if(Object.keys(t??{}).length>0)return!0}if(e?.email&&this.documentPaths?.globalContacts){let t=yield this.commonDbService?.getData({feature:"globalContacts",properties:{documentId:this.documentPaths?.documentId??"",organizationId:this.documentPaths?.organizationId??"",userId:It(e?.email),skipFirestore:!0}});if(Object.keys(t??{}).length>0)return!0}return!1}catch(t){return this.loggingService.catch("Error in ContactService isUserGlobalContact: ",t),!1}})}setLoggedInUser(e){try{e?.userId&&this.documentPaths?.logins&&(this.commonDbService.updateData({feature:"logins",properties:{documentId:this.documentPaths?.documentId??"",organizationId:this.documentPaths?.organizationId??"",userId:It(e?.userId),skipFirestore:!0},data:JSON.parse(JSON.stringify(k(f({},e),{contacts:void 0})))}),this.setLoggedInUserPrivateContacts(e,e?.contacts))}catch(t){this.loggingService.catch("Error in ContactService setLoggedInUser: ",t)}}migrateLoggedInUserFromEmailToUserIdPath(e){return Q(this,null,function*(){try{if(e?.email&&this.documentPaths?.logins){let t=yield this.commonDbService?.getData({feature:"logins",properties:{documentId:this.documentPaths?.documentId??"",organizationId:this.documentPaths?.organizationId??"",userId:It(e?.email),skipFirestore:!0}});if(Object.keys(t??{}).length>0){let i=t;if(i){if(i?.contacts){let a={};Object.keys(i?.contacts??{})?.forEach(l=>{let s=i.contacts[l];if(s?.userId){let d=It(s?.userId);a[d]=s}}),i.contacts=a}yield this.commonDbService.updateData({feature:"logins",properties:{documentId:this.documentPaths?.documentId??"",organizationId:this.documentPaths?.organizationId??"",userId:It(e?.userId),skipFirestore:!0},data:JSON.parse(JSON.stringify(i))}),yield this.commonDbService.deleteData({feature:"logins",properties:{documentId:this.documentPaths?.documentId??"",organizationId:this.documentPaths?.organizationId??"",userId:It(e?.email),skipFirestore:!0}})}}}}catch(t){this.loggingService.catch("Error in ContactService migrateLoggedInUserFromEmailToUserIdPath: ",t)}})}addGlobalContact(e){try{e?.userId&&this.documentPaths?.globalContacts&&this.commonDbService.updateData({feature:"globalContacts",properties:{documentId:this.documentPaths?.documentId??"",organizationId:this.documentPaths?.organizationId??"",userId:It(e?.userId),skipFirestore:!0},data:JSON.parse(JSON.stringify(e))})}catch(t){this.loggingService.catch("Error in ContactService addGlobalContact: ",t)}}getUserAccessFields(){return JSON.parse(JSON.stringify(this.userAccessFields$.value))}getUserAccessFieldsByUserId(e){return this.getUserAccessFields()?.[e]}setUserAccessFields(e){try{let t=this.getUserAccessFields();e.forEach(a=>{t[a.user.userId]=a.accessFields||[]});let i=this.authService.getUser()?.userId;if(i&&t?.[i]?.length){let a=this.userPermissionService?.getCurrentUserPermissions();a&&(a[i]||(a[i]={}),a[i].context={accessFields:t[i]},this.userPermissionService?.setCurrentUserPermissions(a))}this.userAccessFields$.next(JSON.parse(JSON.stringify(t)))}catch(t){this.loggingService.catch("Error in ContactService setUserAccessFields: ",t)}}updateUserInGlobalContactsIfAvailable(e){return Q(this,null,function*(){try{if(e?.userId&&this.documentPaths?.globalContacts&&(yield this.checkIfUserGlobalContact(e))){let i=new ra;i.userId=e?.userId,i.userSnippylyId=e?.userSnippylyId,i.email=e?.email,i.name=e?.name,i.photoUrl=e?.photoUrl,this.commonDbService.updateData({feature:"globalContacts",properties:{documentId:this.documentPaths?.documentId??"",organizationId:this.documentPaths?.organizationId??"",userId:It(e?.userId),skipFirestore:!0},data:JSON.parse(JSON.stringify(i))})}}catch(t){this.loggingService.catch("Error in ContactService updateUserInGlobalContactsIfAvailable: ",t)}})}moveGlobalContactUserFromEmailToUserIdPath(e){return Q(this,null,function*(){try{if(e?.email&&e?.userId&&this.documentPaths?.globalContacts){let t=yield this.commonDbService?.getData({feature:"globalContacts",properties:{documentId:this.documentPaths?.documentId??"",organizationId:this.documentPaths?.organizationId??"",userId:It(e?.email),skipFirestore:!0}});if(Object.keys(t??{}).length>0){let i=t;i&&(yield this.commonDbService.updateData({feature:"globalContacts",properties:{documentId:this.documentPaths?.documentId??"",organizationId:this.documentPaths?.organizationId??"",userId:It(e?.userId),skipFirestore:!0},data:JSON.parse(JSON.stringify(i))}),yield this.commonDbService.deleteData({feature:"globalContacts",properties:{documentId:this.documentPaths?.documentId??"",organizationId:this.documentPaths?.organizationId??"",userId:It(e?.email),skipFirestore:!0}}))}}}catch(t){this.loggingService.catch("Error in ContactService removeUserFromGlobalContactsByEmail: ",t)}})}setLoggedInUserPrivateContacts(e,t){try{if(e?.userId&&this.documentPaths?.logins){let i,a=t?.filter(s=>s?.visibility!=="group"),l=!1;this.authService.getUserOptions()&&(l=!!this.authService.getUserOptions()?.replaceContacts||!!this.authService.getUserOptions()?.replacePrivateContacts),a?.length?(i={},a?.forEach(s=>{if(s?.userId){let d=It(s?.userId);i[d]=s}}),l?this.commonDbService.setData({feature:"allLoginContacts",properties:{documentId:this.documentPaths?.documentId??"",organizationId:this.documentPaths?.organizationId??"",userId:It(e?.userId),skipFirestore:!0},data:JSON.parse(JSON.stringify(i))}):this.commonDbService.updateData({feature:"allLoginContacts",properties:{documentId:this.documentPaths?.documentId??"",organizationId:this.documentPaths?.organizationId??"",userId:It(e?.userId),skipFirestore:!0},data:JSON.parse(JSON.stringify(i))})):l&&this.commonDbService.deleteData({feature:"allLoginContacts",properties:{documentId:this.documentPaths?.documentId??"",organizationId:this.documentPaths?.organizationId??"",userId:It(e?.userId),skipFirestore:!0}})}}catch(i){this.loggingService.catch("Error in ContactService setLoggedInUserPrivateContacts: ",i)}}migrateGroupContactsFromEmailToUserIdPath(e){return Q(this,null,function*(){try{if(this.documentPaths?.groupContacts&&e){let t=yield this.commonDbService?.getData({feature:"groupContacts",properties:{documentId:this.documentPaths?.documentId??"",organizationId:this.documentPaths?.organizationId??"",groupId:e,skipFirestore:!0}});t&&Object.keys(t??{}).forEach(i=>Q(this,null,function*(){let a=t[i];a?.email&&a?.userId&&It(a?.email)===i&&(yield this.commonDbService.deleteData({feature:"groupContactsUser",properties:{documentId:this.documentPaths?.documentId??"",organizationId:this.documentPaths?.organizationId??"",groupId:e,userId:i,skipFirestore:!0}}),yield this.commonDbService.updateData({feature:"groupContactsUser",properties:{documentId:this.documentPaths?.documentId??"",organizationId:this.documentPaths?.organizationId??"",groupId:e,userId:It(a?.userId),skipFirestore:!0},data:JSON.parse(JSON.stringify(a))}))}))}}catch(t){this.loggingService.catch("Error in ContactService migrateGroupContacts: ",t)}})}checkToSetLoggedInUserInGroupContacts(){return Q(this,null,function*(){try{this.user?.groupId&&this.user?.userId&&((yield this.checkIfUserGlobalContact(this.user))||this.docService.getDocumentIam$().pipe(ut(1)).subscribe(t=>Q(this,null,function*(){if(this.user?.groupId&&this.user?.userId){let i=!1,a=this.docService.getDocumentAccessType(t);if(!a||a===zr.PUBLIC)i=!0;else if(a===zr.RESTRICTED){let l=It(this.user?.userId);if(t?.users?.[l]&&(i=!0),this.user?.email){let s=It(this.user?.email);t?.users?.[s]&&(i=!0)}}if(i){let l=new im;l.email=this.user.email,l.visibility="group",l.name=this.user.name,l.photoUrl=this.user.photoUrl,l.userId=this.user.userId,(this.authService.getUserOptions()?.replaceContacts||this.authService.getUserOptions()?.replaceGroupContacts)&&(yield this.removeGroupContacts(this.user?.groupId)),this.setLoggedInUserGroupContacts(this.user?.groupId,[l]),this.user?.contacts&&this.user?.groupId&&this.setLoggedInUserGroupContacts(this.user?.groupId,this.user?.contacts)}}})))}catch(e){this.loggingService.catch("Error in ContactService checkToSetLoggedInUserInGroupContacts: ",e)}})}setLoggedInUserGroupContacts(e,t){try{let i=t?.filter(a=>a?.visibility==="group");i?.length&&i.forEach(a=>Q(this,null,function*(){if(a?.userId&&e&&this.documentPaths?.groupContacts){if(this.configService?.getSF()&&(yield this.checkIfUserGlobalContact(a)))return;yield this.commonDbService.updateData({feature:"groupContactsUser",properties:{documentId:this.documentPaths?.documentId??"",organizationId:this.documentPaths?.organizationId??"",groupId:e,userId:It(a?.userId),skipFirestore:!0},data:JSON.parse(JSON.stringify(a))}),a?.email&&(yield this.commonDbService.deleteData({feature:"groupContactsUser",properties:{documentId:this.documentPaths?.documentId??"",organizationId:this.documentPaths?.organizationId??"",groupId:e,userId:It(a?.email),skipFirestore:!0}}))}}))}catch(i){this.loggingService.catch("Error in ContactService setLoggedInUserGroupContacts: ",i)}}removeGroupContacts(e){return Q(this,null,function*(){try{if(this.documentPaths?.groupContacts&&e)return this.commonDbService.deleteData({feature:"groupContacts",properties:{documentId:this.documentPaths?.documentId??"",organizationId:this.documentPaths?.organizationId??"",groupId:e,skipFirestore:!0}})}catch(t){this.loggingService.catch("Error in ContactService removeGroupContacts: ",t)}})}mergeUserContacts(){try{let e=[];this.userPersonalContacts&&e.push(...this.userPersonalContacts),this.userGroupContacts&&e.push(...this.userGroupContacts),this.userGlobalContacts&&e.push(...this.userGlobalContacts);let t={};e.forEach(i=>{i?.userId?(!i?.email||!t[i.email])&&(t[i.userId]=i):i?.email&&(!i?.userId||!t[i.userId])&&(t[i.email]=i)}),e=Object.values(t??{}),this.internalUserContacts$.next(e)}catch(e){this.loggingService.catch("Error in ContactService mergeUserContacts: ",e)}}getInternalUserContacts(){return this.internalUserContacts$.value}getInternalUserContacts$(){return this.internalUserContacts$.asObservable()}getUserContacts$(e){try{let{organizationId:t,documentId:i,veltFolderId:a}=e||{};return t&&i?pn([this.usersByOrganizationId$,this.usersByOrganizationIdAndFolderId$,this.usersByOrganizationIdAndDocumentId$,this.userById$,this.customUserContacts$,this.customUserContactsConfig$,this.getContactListScopeForOrganizationUsers$(),this.temporaryUserIds$]).pipe(ue(([l,s,d,g,u,b,E,A])=>{let M={},V=!1;b&&!b?.merge&&(V=!0);let q=xe=>E.some(ke=>xe.includes(ke)),ae=q([fo.ALL,fo.ORGANIZATION])?Object.keys(l?.[t]||{}):[],fe=a?q([fo.ALL,fo.FOLDER])?Object.keys(s?.[t]?.[a]||{}):[]:[],ie=q([fo.ALL,fo.DOCUMENT])?Object.keys(d?.[t]?.[i]||{}):[];if([...ae,...fe||[],...ie,...A].forEach(xe=>{let ke=g?.[xe];ke&&(M[xe]=ke)}),u){let{merge:xe,options:ke}=b||{},{organizationId:ye,documentId:Oe,folderId:Ne}=ke||{},Ue=Ne?Pr(Ne):void 0;(!ye||ye===t)&&(!Oe||Oe===i)&&(!Ue||Ue===a)&&(xe||(M={}),u.forEach(ze=>{ze?.userId&&(M[ze.userId]=ze)}))}return Object.values(M??{})})):this.userContacts$.asObservable().pipe(ue(l=>l))}catch(t){return this.loggingService.catch("Error in ContactService getUserContacts$ metadata: ",t),le([])}}getUserContactsBySnippylyId$(){return this.userSnippylyIdContacts$.asObservable()}getUserBySnippylyId(e){return this.userSnippylyIdContacts$.value?.[e]}getAtHereLabel(){return this.atHereLabel$.asObservable()}getAtHereDescription(){return this.atHereDescription$.asObservable()}getUserContactsFromDb$(){this.getUserContactSubscription||(this.getUserContactSubscription=this.authService.getUser$().pipe($e(e=>!!e),_e(e=>this.docService.getDocumentPaths$().pipe($e(t=>!!t),on(t=>{this.documentPaths=t}),ue(()=>e))),_e(e=>{if(this.userGroupContacts=[],this.userPersonalContacts=[],!e)return le();if(!this.documentPaths)return le();let t=[];return t.push(this.commonDbService.dbListener({feature:"allGlobalContacts",properties:{documentId:this.documentPaths?.documentId,organizationId:this.documentPaths?.organizationId,skipFirestore:!0}}).pipe(ue(i=>i?.data),on(i=>{i?(this.userGlobalContacts=Object.values(i??{}),this.userGlobalContacts?.find(a=>a.userId===this.user?.userId)?this.userGlobalContact$.next(!0):this.userGlobalContact$.next(!1)):(this.userGlobalContacts=[],this.userGlobalContact$.next(!1))}))),t.push(this.commonDbService.dbListener({feature:"groupContacts",properties:{documentId:this.documentPaths?.documentId,organizationId:this.documentPaths?.organizationId,skipFirestore:!0,groupId:e?.groupId}}).pipe(ue(i=>i?.data),on(i=>{i?(this.userGroupContacts=Object.values(i??{}),this.userGroupContacts?.find(a=>a?.userId===this.user?.userId)?this.userGroupContact$.next(!0):this.userGroupContact$.next(!1)):(this.userGroupContacts=[],this.userGroupContact$.next(!1))}))),t.push(this.commonDbService.dbListener({feature:"allLoginContacts",properties:{documentId:this.documentPaths?.documentId,organizationId:this.documentPaths?.organizationId,skipFirestore:!0,userId:It(e?.userId)}}).pipe(ue(i=>i?.data),on(i=>{i?this.userPersonalContacts=Object.values(i??{}):this.userPersonalContacts=[]}))),Ro(...t).pipe(zo(this.authService.getUser$().pipe($e(i=>!i))))})).subscribe(()=>{this.mergeUserContacts()},e=>{this.loggingService.catch("Error in ContactService getUserContacts$ subscription: ",e)}))}addUserContact(e){try{this.user?.organizationId||this.user?.groupId&&(e.visibility="group",this.setLoggedInUserGroupContacts(this.user?.groupId,[e]))}catch(t){this.loggingService.catch("Error in ContactService addUserContact: ",t)}}isUserGlobalContact$(){return this.userGlobalContact$.asObservable().pipe(xt(Jt))}isUserGlobalContact(){return this.userGlobalContact$.value}isUserGroupContact$(){return this.userGroupContact$.asObservable()}isUserGroupContact(){return this.userGroupContact$.value}getLoggedInUsers$(){return this.getLoggedInUsersSubscription||(this.getLoggedInUsersSubscription=this.authService.getUser$().pipe(_e(e=>e?this.documentPaths?e?.userId&&this.documentPaths?.logins?this.commonDbService.dbListener({feature:"allLogins",properties:{documentId:this.documentPaths?.documentId,organizationId:this.documentPaths?.organizationId,skipFirestore:!0}}).pipe(ue(t=>t?.data),on(t=>{t?this.users=Object.values(t??{}):this.users=[]})):(this.users=[],le()):le():le())).subscribe(()=>{this.users$.next(this.users)},e=>{this.loggingService.catch("Error in ContactService getLoggedInUsers$ subscription: ",e)})),this.users$.asObservable()}getUsersMap$(){return this.authService.getUser$().pipe(_e(e=>e?.organizationId?this.userById$.pipe(ue(t=>{let i={};return Object.values(t||{}).forEach(a=>{a?.userSnippylyId&&(i[a?.userSnippylyId]=a)}),i})):this.users$.pipe(ue(t=>{let i={};return t.forEach(a=>{i[a.userSnippylyId]=a}),i}))))}getUserByEmail$(e){return this.users$.pipe(ue(t=>t.find(i=>i.email===e)))}getUserByEmail(e){return this.users?.find(t=>t.email===e)}getContactByEmail(e){return this.getInternalUserContacts().find(t=>t.email===e)}getUserByUserId$(e){return this.users$.pipe(ue(t=>t.find(i=>i.userId===e)))}getUserGroupContacts(){return this.userGroupContacts}getTemporaryUsers(){try{let e=this.authService.getUser();this.docService.getOrganizationConfig$().pipe($e(t=>!!t),ue(t=>t?.organizationId)).subscribe(t=>Q(this,null,function*(){if(t&&e){let i=((yield this.commonDbService?.queryData({feature:"allPermissionsUsers",properties:{organizationId:t,useCollectionGroup:!1,isCollection:!0,firestoreQuery:[ft("expiresAt",">",new Date().getTime())]}}))??[]).filter(a=>a?.userId!==e?.userId);if(i?.length){let a=i.map(g=>g?.userId),l=ot(),s=xc.GET_TEMPORARY_USERS;this.coreActionsService.triggerAction(Qe.USER_RESOLVER,{event:K.Events.Resolver.USER_RESOLUTION_REQUEST_FORMED,timestamp:new Date().getTime(),uniqueId:l,moduleName:s,methodName:gi.GET_TEMPORARY_USERS,source:"internal",payload:{userIds:a}});let d=yield this.usersService.resolveUsers({userIds:a,uniqueId:l,moduleName:s});if(d){let g={};Object.entries(d).forEach(([b,E])=>{g[b]=E}),this.userById$.next(f(f({},this.userById$.value),g));let u=new Set([...this.temporaryUserIds$.value,...Object.keys(g)]);this.temporaryUserIds$.next(Array.from(u))}}}}))}catch(e){this.loggingService.catch("Error in ContactService getTemporaryUsers: ",e)}}searchUsers(e){return Q(this,null,function*(){try{if(!e||typeof e!="string"||!e.trim())return[];let t=e.trim();return this.searchUsersDebounced$||(this.searchUsersDebounced$=this.searchUsersSubject$.pipe(Qr(this.searchUsersDebounceTime),xt(),_e(i=>po(this.performSearch(i)).pipe(ue(a=>({searchText:i,results:a})),Jn(a=>(this.loggingService.catch("Error in ContactService performSearch: ",a),le({searchText:i,results:[]})))))),this.searchUsersDebounced$.subscribe({next:({searchText:i,results:a})=>{Array.from(this.pendingSearchPromises.keys()).forEach(d=>{if(d!==i){let g=this.pendingSearchPromises.get(d);g&&(g.forEach(({resolve:u})=>u([])),this.pendingSearchPromises.delete(d))}});let s=this.pendingSearchPromises.get(i);s&&(s.forEach(({resolve:d})=>d(a)),this.pendingSearchPromises.delete(i))},error:i=>{this.pendingSearchPromises.forEach(a=>{a.forEach(({reject:l})=>l(i))}),this.pendingSearchPromises.clear()}})),new Promise((i,a)=>{this.pendingSearchPromises.has(t)||this.pendingSearchPromises.set(t,[]),this.pendingSearchPromises.get(t).push({resolve:i,reject:a}),this.searchUsersSubject$.next(t)})}catch(t){return this.loggingService.catch("Error in ContactService searchUsers: ",t),[]}})}performSearch(e){return Q(this,null,function*(){try{let t=this.docService.getOrganizationConfig()?.organizationId;if(!t)return[];let i=this.documentPaths?.veltFolderId,a=this.docService.getDocumentIds().map(q=>q?.documentId),l=e.toLowerCase().trim(),s=l+"\uF8FF",d=[],g=a?.filter(q=>!!q)||[],u=g.length>0,b=!!i;if(u){let q=[];for(let fe=0;fe<g.length;fe+=20)q.push(g.slice(fe,fe+20));q.forEach(fe=>{let ie=[ft("documentIds","array-contains-any",fe),ft("viewerDocumentIds","array-contains-any",fe)],Ce=[ft("organizationIds","array-contains-any",[t]),ft("viewerOrganizationIds","array-contains-any",[t]),...ie];b&&Ce.push(ft("folderIds","array-contains-any",[i]),ft("viewerFolderIds","array-contains-any",[i])),d.push(this.commonDbService.queryData({feature:"allDocumentUsers",properties:{organizationId:t,isCollection:!0,useCollectionGroup:!1,useQuery:!0,firestoreQuery:[_r(N0(...Ce),ft("user.name_lowercase",">=",l),ft("user.name_lowercase","<",s)),lv(10)]}}).catch(()=>[])),d.push(this.commonDbService.queryData({feature:"allDocumentUsers",properties:{organizationId:t,isCollection:!0,useCollectionGroup:!1,useQuery:!0,firestoreQuery:[_r(N0(...Ce),ft("user.email_lowercase",">=",l),ft("user.email_lowercase","<",s)),lv(10)]}}).catch(()=>[]))})}let E=yield Promise.all(d),A=[];E.forEach(q=>{q&&Array.isArray(q)?q.forEach(ae=>{ae&&ae.user&&ae.user.userId&&A.push(ae)}):q&&typeof q=="object"&&Object.values(q).forEach(fe=>{fe&&fe.user&&fe.user.userId&&A.push(fe)})});let M=new Map;A.forEach(q=>{let ae=q.user?.userId;ae&&!M.has(ae)&&M.set(ae,q)});let V=Array.from(M.values());return this.setResolvedUsers(V,!0),V}catch(t){return this.loggingService.catch("Error in ContactService performSearch: ",t),[]}})}setResolvedUsers(e,t=!1){try{if(e?.length){let i=[],a=[],l=[],s=this.docService.getOrganizationConfig()?.organizationId,d=this.documentPaths?.veltFolderId,g=this.docService.getDocumentIds().map(E=>E?.documentId);e.forEach(E=>{this.userById$.value[E?.user?.userId]||(s&&E?.organizationIds?.includes(s)&&!i.find(A=>A?.user?.userId===E?.user?.userId)&&i.push(E),d&&E?.folderIds?.includes(d)&&!a.find(A=>A?.user?.userId===E?.user?.userId)&&a.push(E),g?.some(A=>E?.documentIds?.includes(A))&&!l.find(A=>A?.user?.userId===E?.user?.userId)&&l.push(E))}),i?.length&&this.setUserOrganizationContacts(i,s,t),a?.length&&this.setUserFolderContacts(a,t),l?.length&&this.setUserDocumentContacts(l,t);let b=[...i,...a,...l].filter((E,A,M)=>A===M.findIndex(V=>V.user.userId===E.user.userId));b?.length&&(this.setUserAccessFields(b),this.mergeOrganizationAndDocumentContacts())}}catch(i){this.loggingService.catch("Error in ContactService setResolvedUsers: ",i)}}getOrganizationContactsFromDb$(){try{this.getOrganizationContactsSubscription||(this.getOrganizationContactsSubscription=this.authService.getUser$().pipe(_e(e=>e?.organizationId?le(e).pipe(_e(t=>this.docService.getOrganizationConfig$().pipe($e(i=>!!i),ue(()=>t))),_e(t=>this.usersService.getResolveOrganizationUsers$().pipe($e(i=>i),ue(()=>t))),_e(t=>{let i=this.docService.getOrganizationConfig()?.organizationId;return this.setUserOrganizationContacts([],i),t?i?this.commonDbService.dbListener({feature:"allOrganizationUsers",properties:{organizationId:i,isCollection:!0,useQuery:!0,firestoreQuery:[_r(N0(ft("organizationIds","array-contains-any",[i]),ft("viewerOrganizationIds","array-contains-any",[i]))),vo("id"),...this.commentService?.getPaginatedContactList()?[lv(10)]:[]]}}).pipe(ue(a=>a?.data),_e(a=>this.commentService?.getPaginatedContactList()&&!Object.values(a??{}).find(l=>l?.user?.userId===this.authService.getUser()?.userId)?po(this.commonDbService.queryData({feature:"allOrganizationUsers",properties:{organizationId:i,isCollection:!0,useQuery:!0,firestoreQuery:[_r(N0(ft("organizationIds","array-contains-any",[i]),ft("viewerOrganizationIds","array-contains-any",[i])),ft("user.userId","==",this.authService.getUser()?.userId))]}})).pipe(ue(l=>{if(l&&l.length>0){let s=l[0],d=s?.user?.userId||s?.id;if(d&&a){let g=It(d);return k(f({},a),{[g]:s})}}return a})):le(a)),ue(a=>{if(a){typeof a=="object"&&(a?.undefined&&delete a.undefined,a?.null&&delete a.null);let l=Object.values(a??{});this.setUserAccessFields(l),this.setUserOrganizationContacts(l,i)}else this.setUserOrganizationContacts([],i)})):le():le()}),_e(()=>this.getContactListScopeForOrganizationUsers$())):(this.setUserOrganizationContacts([]),le()))).subscribe(()=>{this.mergeOrganizationAndDocumentContacts()},e=>{this.loggingService.catch("Error in ContactService getOrganizationContactsFromDb$ subscription: ",e)}))}catch{}}getFolderContactsFromDb$(){try{this.getFolderContactsSubscription||(this.getFolderContactsSubscription=this.authService.getUser$().pipe(_e(e=>e?le(e).pipe(_e(t=>this.docService.getOrganizationConfig$().pipe($e(i=>!!i),ue(()=>t))),_e(t=>this.usersService.getResolveFolderUsers$().pipe($e(i=>i),ue(()=>t))),_e(t=>{let i=this.docService.getOrganizationConfig()?.organizationId;if(this.setUserFolderContacts([]),!t)return le();if(!this.commonDbService.shouldUseFirestore())return le();if(!this.documentPaths?.veltFolderId)return le();let a=le([]);return a=this.commonDbService.dbListener({feature:"allFolderUsers",properties:{organizationId:i,folderId:this.documentPaths?.veltFolderId,isCollection:!0,useQuery:!0,firestoreQuery:[_r(N0(ft("folderIds","array-contains-any",[this.documentPaths?.veltFolderId]),ft("viewerFolderIds","array-contains-any",[this.documentPaths?.veltFolderId]))),vo("id"),...this.commentService?.getPaginatedContactList()?[lv(10)]:[]]}}).pipe(ue(l=>l?.data)),a.pipe(ue(l=>{if(l){typeof l=="object"&&(l?.undefined&&delete l.undefined,l?.null&&delete l.null);let s=Object.values(l??{});this.setUserAccessFields(s),this.setUserFolderContacts(s)}else this.setUserFolderContacts([])}))}),_e(()=>this.getContactListScopeForOrganizationUsers$())):(this.setUserFolderContacts([]),le()))).subscribe(()=>{this.mergeOrganizationAndDocumentContacts()},e=>{this.loggingService.catch("Error in ContactService getFolderContactsFromDb$ subscription: ",e)}))}catch{}}getDocumentContactsFromDb$(){try{this.getDocumentContactsSubscription||(this.getDocumentContactsSubscription=this.authService.getUser$().pipe(_e(e=>e?le(e).pipe(_e(t=>this.docService.getDocumentPaths$().pipe($e(i=>!!i),on(i=>{this.documentPaths=i}),ue(()=>t))),_e(t=>this.usersService.getResolveDocumentUsers$().pipe($e(i=>i),ue(()=>t))),_e(t=>(this.setUserDocumentContacts([]),t?this.documentPaths?this.docService.getDocumentIds$().pipe(_e(i=>{let a=i?.length>0?i.map(g=>g.documentId):[this.documentPaths?.documentId??""];if(a.some(g=>!g)||!this.documentPaths)return le();let l=le([]),s={isCollection:!0,useQuery:!0};this.commonDbService.shouldUseFirestore()||(s.documentId=a?.length?a[0]:void 0,s.organizationId=this.documentPaths?.organizationId);let d=[];for(let g=0;g<a.length;g+=U.LISTENER_BATCH_SIZE)d.push(a.slice(g,g+U.LISTENER_BATCH_SIZE));return l=pn(d.map(g=>this.commonDbService.dbListener({feature:"allDocumentUsers",properties:k(f({},s),{firestoreQuery:[_r(N0(ft("documentIds","array-contains-any",g),ft("viewerDocumentIds","array-contains-any",g))),vo("id"),...this.commentService?.getPaginatedContactList()?[lv(10)]:[]]})}).pipe(la()))).pipe(ue(g=>Ra(g)?.data)),l.pipe(ue(g=>{if(g){typeof g=="object"&&(g?.undefined&&delete g.undefined,g?.null&&delete g.null);let u=Object.values(g??{});this.setUserAccessFields(u),this.setUserDocumentContacts(u)}else this.setUserDocumentContacts([])}))})):le():le())),_e(()=>this.getContactListScopeForOrganizationUsers$())):(this.setUserDocumentContacts([]),le()))).subscribe(()=>{this.mergeOrganizationAndDocumentContacts()},e=>{this.loggingService.catch("Error in ContactService getDocumentContactsFromDb$ subscription: ",e)}))}catch{}}setUserOrganizationContacts(e,t,i=!0){try{let a=e.find(s=>s.user.userId===this.user?.userId);a&&this.setCurrentOrganizationUserIAM(a);let l=e.map(s=>s.user)?.filter(s=>!this.userOrganizationContacts$.value.find(d=>d.userId===s.userId));if(this.userOrganizationContacts$.next([...this.userOrganizationContacts$.value,...l]),i&&this.usersService.setUserByIds(l),t){let s={};s[t]={};let d={};e.forEach(u=>{s[t][u.user.userId]=u,d[u.user.userId]=u.user}),this.userById$.next(f(f({},this.userById$.value),d));let g=this.usersByOrganizationId$.value?.[t];g&&(s[t]=f(f({},g),s[t])),this.usersByOrganizationId$.next(k(f({},this.usersByOrganizationId$.value),{[t]:s[t]}))}else this.usersByOrganizationId$.next({})}catch(a){this.loggingService.catch("Error in ContactService setUserOrganizationContacts: ",a)}}getUserOrganizationContacts$(){return this.getContactListScopeForOrganizationUsers$().pipe(_e(()=>this.checkContactListScopeForOrganizationUsers([fo.ALL,fo.ORGANIZATION])?this.userOrganizationContacts$.asObservable():le([])))}getUserOrganizationContacts(){return this.checkContactListScopeForOrganizationUsers([fo.ALL,fo.ORGANIZATION])?this.userOrganizationContacts$.value:[]}setUserFolderContacts(e,t=!0){try{let i=e?.map(d=>d?.user)?.filter(d=>!this.userFolderContacts$.value.find(g=>g.userId===d.userId));this.userFolderContacts$.next([...this.userFolderContacts$.value,...i]),t&&this.usersService.setUserByIds(i);let a=this.usersByOrganizationIdAndFolderId$.value||{},l=f({},a),s={};e?.forEach(d=>{let{organizationId:g}=d?.metadata||{};g&&(l[g]||(l[g]={}),d.folderIds?.forEach(u=>{l[g][u]||(l[g][u]={}),l[g][u]=k(f({},l[g][u]),{[d.user.userId]:d}),s[d.user.userId]=d.user}))}),this.userById$.next(f(f({},this.userById$.value),s)),this.usersByOrganizationIdAndFolderId$.next(l)}catch(i){this.loggingService.catch("Error in ContactService updateUserFolderContacts: ",i)}}getUserFolderContacts$(){return this.getContactListScopeForOrganizationUsers$().pipe(_e(()=>this.checkContactListScopeForOrganizationUsers([fo.ALL,fo.FOLDER])?this.userFolderContacts$.asObservable():le([])))}getUserFolderContacts(){return this.checkContactListScopeForOrganizationUsers([fo.ALL,fo.FOLDER])?this.userFolderContacts$.value:[]}setUserDocumentContacts(e,t=!0){try{let i=e?.map(d=>d?.user)?.filter(d=>!this.userDocumentContacts$.value.find(g=>g.userId===d.userId));this.userDocumentContacts$.next([...this.userDocumentContacts$.value,...i]),t&&this.usersService.setUserByIds(i);let a=this.usersByOrganizationIdAndDocumentId$.value||{},l=f({},a),s={};e?.forEach(d=>{let{organizationId:g}=d?.metadata||{};g&&(l[g]||(l[g]={}),d.documentIds?.forEach(u=>{l[g][u]||(l[g][u]={}),l[g][u]=k(f({},l[g][u]),{[d.user.userId]:d}),s[d.user.userId]=d.user}))}),this.userById$.next(f(f({},this.userById$.value),s)),this.usersByOrganizationIdAndDocumentId$.next(l)}catch(i){this.loggingService.catch("Error in ContactService updateUserDocumentContacts: ",i)}}getUserDocumentContacts$(){return this.getContactListScopeForOrganizationUsers$().pipe(_e(()=>this.checkContactListScopeForOrganizationUsers([fo.ALL,fo.DOCUMENT])?this.userDocumentContacts$.asObservable():le([])))}getUserDocumentContacts(){return this.checkContactListScopeForOrganizationUsers([fo.ALL,fo.DOCUMENT])?this.userDocumentContacts$.value:[]}setCurrentOrganizationUserIAM(e){try{this.currentOrganizationUserIAM$.next(JSON.parse(JSON.stringify(e)))}catch(t){this.loggingService.catch("Error in ContactService setCurrentOrganizationUserIAM: ",t)}}getCurrentOrganizationUserIAM$(){return this.currentOrganizationUserIAM$.asObservable().pipe(xt(Jt))}getCurrentOrganizationUserIAM(){return this.currentOrganizationUserIAM$.value}mergeOrganizationAndDocumentContacts(){try{this.mergeContactsDebounceTimer&&clearTimeout(this.mergeContactsDebounceTimer),this.mergeContactsDebounceTimer=setTimeout(()=>{this.executeMergeContacts()},200)}catch(e){this.loggingService.catch("Error in ContactService mergeOrganizationAndDocumentContacts: ",e)}}executeMergeContacts(){try{let e=this.getContactListScopeForOrganizationUsers(),t=[];e.includes(fo.ALL)?t=[...this.getUserOrganizationContacts(),...this.getUserFolderContacts(),...this.getUserDocumentContacts()]:e.includes(fo.ORGANIZATION)?t=[...this.getUserOrganizationContacts()]:e.includes(fo.FOLDER)?t=[...this.getUserFolderContacts()]:e.includes(fo.DOCUMENT)&&(t=[...this.getUserDocumentContacts()]);let i=[...new Map(t.filter(a=>a?.userId).map(a=>[a.userId,a])).values()];this.internalUserContacts$.next(i)}catch(e){this.loggingService.catch("Error in ContactService mergeOrganizationAndDocumentContacts: ",e)}}getOrganizationGroupsFromDb$(){try{this.getOrganizationGroupsSubscription||(this.getOrganizationGroupsSubscription=this.authService.getUser$().pipe(_e(e=>e?.organizationId?le(e).pipe(_e(t=>this.docService.getOrganizationConfig$().pipe($e(i=>!!i),ue(()=>t))),_e(t=>{if(this.setUserOrganizationGroups([]),!t)return le();let i=this.docService.getOrganizationConfig()?.organizationId;return i?this.commonDbService.dbListener({feature:"allOrganizationGroups",properties:{organizationId:i,isCollection:!0}}).pipe(ue(a=>a?.data),ue(a=>{a?(typeof a=="object"&&(a?.undefined&&delete a.undefined,a?.null&&delete a.null),this.setUserOrganizationGroups(Object.values(a??{}))):this.setUserOrganizationGroups([])})):le()})):(this.setUserOrganizationGroups([]),le()))).subscribe(()=>{},e=>{this.loggingService.catch("Error in ContactService getOrganizationGroupsFromDb$ subscription: ",e)}))}catch{}}setUserOrganizationGroups(e){try{this.userOrganizationGroups$.next(e)}catch(t){this.loggingService.catch("Error in ContactService setUserOrganizationGroups: ",t)}}onContactSelected(e){try{if(e?.userId){let t=!!this.getUserDocumentContacts().find(a=>a.userId===e.userId),i=!!this.getUserOrganizationContacts().find(a=>a.userId===e.userId);switch(this.documentAccessType){case zr.RESTRICTED:if(!t){let a={contact:e,isOrganizationContact:i,isDocumentContact:t,documentAccessType:this.documentAccessType};this.onContactSelectedSubject$.next(a)}break}}else{let t={contact:e,isOrganizationContact:!1,isDocumentContact:!1,documentAccessType:this.documentAccessType};this.onContactSelectedSubject$.next(t)}}catch(t){this.loggingService.catch("Error in ContactService onContactSelected: ",t)}}onContactSelected$(){return this.onContactSelectedSubject$.asObservable()}getOrganizationGroups$(){return this.getContactListScopeForOrganizationUsers$().pipe(_e(()=>this.checkContactListScopeForOrganizationUsers([fo.ALL,fo.ORGANIZATION_USER_GROUP])?this.userOrganizationGroups$.asObservable():le([])))}enableAtHere(){try{if(this.analyticsService.setFeatureConfig({feature:je.COMMENT,config:{atHereEnabled:!0}}),this.atHereEnabled$.value===!0)return;this.atHereEnabled$.next(!0)}catch(e){this.loggingService.catch("Error in ContactService enableAtHere: ",e)}}setAtHereLabel(e){try{this.analyticsService.setFeatureConfig({feature:je.COMMENT,config:{atHereLabel:e}}),e&&this.atHereLabel$.next(e)}catch(t){this.loggingService.catch("Error in ContactService setAtHereLabel: ",t)}}setAtHereDescription(e){try{this.analyticsService.setFeatureConfig({feature:je.COMMENT,config:{atHereDescription:e}}),e&&this.atHereDescription$.next(e)}catch(t){this.loggingService.catch("Error in ContactService setAtHereDescription: ",t)}}disableAtHere(){try{if(this.analyticsService.setFeatureConfig({feature:je.COMMENT,config:{atHereEnabled:!1}}),this.atHereEnabled$.value===!1)return;this.atHereEnabled$.next(!1)}catch(e){this.loggingService.catch("Error in ContactService disableAtHere: ",e)}}getAtHereEnabled$(){return this.getContactListScopeForOrganizationUsers$().pipe(_e(()=>this.checkContactListScopeForOrganizationUsers([fo.ALL,fo.DOCUMENT])?this.atHereEnabled$.asObservable():le(!1)))}getAtHereEnabled(){return this.checkContactListScopeForOrganizationUsers([fo.ALL,fo.DOCUMENT])?this.atHereEnabled$.value:!1}updateContactListScopeForOrganizationUsers(e){try{this.contactListScopeForOrganizationUsers$.next(e)}catch(t){this.loggingService.catch("Error in ContactService updateContactListScopeForOrganizationUsers: ",t)}}getContactListScopeForOrganizationUsers$(){return this.contactListScopeForOrganizationUsers$.asObservable()}getContactListScopeForOrganizationUsers(){return this.contactListScopeForOrganizationUsers$.value}checkContactListScopeForOrganizationUsers(e){return this.getContactListScopeForOrganizationUsers().some(t=>e.includes(t))}updateContactList(e,t){return Q(this,null,function*(){try{this.analyticsService.trackEvent(K.Events.Contact.UPDATE_CONTACT_LIST_TRIGGERED,{contactsCount:e?.length,config:t}),this.usersService.setUserByIds(e),this.customUserContacts$.next(e),this.customUserContactsConfig$.next(t)}catch(i){this.loggingService.catch("Error in CommentService updateContactList: ",i)}})}convert(e){try{if(e?.options){let{documentId:t,organizationId:i}=this.docService.getServerId(e?.options);e.options=k(f({},e?.options),{documentId:t,organizationId:i})}return this}catch(t){return this.loggingService.catch("Error in ContactService convert: ",t),this}}getContactList$(){try{return this.authService.getUser$().pipe(_e(e=>e?pn([this.userOrganizationContacts$.asObservable(),this.userFolderContacts$.asObservable(),this.userDocumentContacts$.asObservable(),this.userOrganizationGroups$.asObservable(),this.customUserContacts$.asObservable()]).pipe(ue(([t,i,a,l,s])=>{let d={};d.organizationUsers=t?.map(u=>this.convertToClientUser(u)),d.folderUsers=i?.map(u=>this.convertToClientUser(u)),d.documentUsers=a?.map(u=>this.convertToClientUser(u)),d.updatedContactList=s?.map(u=>this.convertToClientUser(u));let g=[];return l?.forEach(u=>{let b=this.convertToClientUserGroup(u,d.organizationUsers||[]);b&&g.push(b)}),d.userGroups=g,d}),xt(Jt)):le(null)),Jn(e=>(this.loggingService.catch("Error in ContactService getContactList$: ",e),le(null))))}catch(e){return this.loggingService.catch("Error in ContactService getContactList$: ",e),le(null)}}convertToClientUserGroup(e,t){try{let i={groupId:e?.metadata?.clientGroupId,groupName:e?.metadata?.groupName,users:[]},a={};return t?.forEach(l=>{if(l?.userId){let s=It(l.userId);a[s]=l}}),Object.keys(e?.users??{}).forEach(l=>{a[l]&&i.users?.push(a[l])}),i}catch(i){return this.loggingService.catch("Error in ContactService convertToClientUserGroup: ",i),null}}convertToClientUser(e){try{return e&&(e=JSON.parse(JSON.stringify(e)),e?.clientGroupId&&(e.groupId=e.clientGroupId,delete e.clientGroupId),e?.clientOrganizationId&&(e.organizationId=e.clientOrganizationId,delete e.clientOrganizationId),e?.userSnippylyId&&delete e.userSnippylyId),e}catch(t){return this.loggingService.catch("Error in ContactService convertToClientUser: ",t),e}}getCustomUserContacts(){return this.customUserContacts$.value}getCustomUserContacts$(){return this.customUserContacts$.asObservable()}getCustomUserContactsConfig(){return this.customUserContactsConfig$.value}getCustomUserContactsConfig$(){return this.customUserContactsConfig$.asObservable()}};o.\u0275fac=function(t){return new(t||o)(X(lt),X(We),X(Ft),X(tr),X($n),X(ct),X(x),X(Tn),X(An))},o.\u0275prov=Me({token:o,factory:o.\u0275fac,providedIn:"root"});let n=o;return n})();var Ln=(()=>{let o=class o{constructor(e,t,i,a,l,s,d,g){this.analyticsService=e,this.authService=t,this.contactService=i,this.databaseService=a,this.docService=l,this.configService=s,this.loggingService=d,this.commonDbService=g,this.documentIAM$=new Se(null),this.workspaceIAM$=new Se(null),this.roles$=new Se([]),this.getDocumentIamSubscription=null,this.getOrganizationIamSubscription=null,this.getWorkspaceIamSubscription=null;try{this.authService.setIamService(this),this.databaseService.getDb().pipe($e(u=>!!u),ut(1)).subscribe(u=>{u&&(this.getUser(),this.getDocumentPaths())},u=>{this.loggingService.catch("Error in CommentService getDb subscription: ",u)}),this.getRole$().pipe(ut(1)).subscribe(u=>{this.authService?.getUser()&&!u&&this.analyticsService.trackEvent(K.Events.Iam.USER_ACCESS_DENIED)}),this.documentIAM$.subscribe(u=>{u?.accessType&&this.contactService.setDocumentAccessType(u.accessType)})}catch(u){this.loggingService.catch("Error in IamService constructor: ",u)}}clearCache(){this.loggingService.log("%c[WB] Calling FUNCTION: clearCache in IamService","color: green;");try{this.documentIAM$.next(null),this.workspaceIAM$.next(null),this.roles$.next([]),this.documentPaths=null}catch(e){this.loggingService.catch("Error in IamService clearCache: ",e)}}getUser(){try{this.authService.getUser$().pipe($e(e=>!!e)).subscribe(e=>{this.user=e,this.user?this.getDocumentIam():(this.getDocumentIamSubscription?.unsubscribe(),this.getOrganizationIamSubscription?.unsubscribe(),this.getWorkspaceIamSubscription?.unsubscribe())},e=>{this.loggingService.catch("Error in IamService getUser$ subscription: ",e)})}catch(e){this.loggingService.catch("Error in IamService getUser: ",e)}}getDocumentPaths(){try{this.docService.getDocumentPaths$().pipe($e(e=>!!e)).subscribe(e=>{this.documentPaths=e,this.getDocumentIam(),this.getWorkspaceIam()},e=>{this.loggingService.catch("Error in IamService getDocumentPaths$ subscription: ",e)})}catch(e){this.loggingService.catch("Error in IamService getDocumentPaths: ",e)}}getDocumentIam(){try{this.getDocumentIamSubscription&&(this.getDocumentIamSubscription.unsubscribe(),this.getDocumentIamSubscription=null),this.user?this.getDocumentIamSubscription=this.docService.getDocumentIam$().subscribe(e=>{let t=e||new uL;this.documentIAM$.next(t)},e=>{this.loggingService.catch("Error in IamService getDocumentIam$ subscription: ",e)}):this.documentIAM$.next(null)}catch(e){this.loggingService.catch("Error in IamService getDocumentIam: ",e)}}getWorkspaceIam(){try{this.getWorkspaceIamSubscription||(this.getWorkspaceIamSubscription=this.commonDbService.dbListener({feature:"workspaceIam",properties:{skipFirestore:!0}}).pipe(Jn(e=>le(null))).subscribe(e=>{this.workspaceIAM$.next(e?.data),this.roles$.next(e?.data?.roles||[])}))}catch(e){this.loggingService.catch("Error in IamService getWorkspaceIam: ",e)}}isUserAllowed$(){return this.getRole$().pipe(ue(e=>!!e),xt())}getDocumentIAM$(){return this.documentIAM$.asObservable()}getRoles$(){return this.roles$.asObservable().pipe(ue(e=>e?.length?e:U.WorkspaceRoles))}getFeaturesAccessLevel$(){return this.documentIAM$.asObservable().pipe(ue(e=>e?.features),_e(e=>this.getRole$().pipe(ue(t=>(t===Lo.ADMIN&&(e=e&&JSON.parse(JSON.stringify(e||{})),e?.all?.disabled&&(e.all.disabled=!1)),e)))))}hasRole(e){try{return e===this.getRole()}catch(t){return this.loggingService.catch("Error in IamService hasRole: ",t),!1}}hasRoleAny(e=[]){try{return e?.includes(this.getRole()||"")}catch(t){return this.loggingService.catch("Error in IamService hasRoleAny: ",t),!1}}hasRole$(e){try{return this.authService.getUser$().pipe(_e(()=>this.documentIAM$.pipe($e(t=>!!t),_e(()=>this.workspaceIAM$.pipe(ue(()=>e===this.getRole()))))))}catch(t){return this.loggingService.catch("Error in IamService hasRole$: ",t),le(!1)}}getRole$(){try{return this.authService.getUser$().pipe(_e(()=>this.configService.getSF$()),_e(()=>this.configService.getSF()?this.contactService.isUserGlobalContact$():le(null)),_e(()=>this.configService.getSF()?this.documentIAM$.pipe($e(e=>!!e),xt(Jt)):le(null)),_e(()=>this.workspaceIAM$.pipe(xt(Jt))),ue(()=>this.getRole()))}catch(e){return this.loggingService.catch("Error in IamService getRole$: ",e),le(null)}}getRole(){try{let e=this.configService.getSF();if(e&&this.contactService.isUserGlobalContact())return Lo.ADMIN;if(!e)return this.user?.isAdmin?Lo.ADMIN:Lo.COMMENTER;let t=null,i;if(this.user)switch((this.documentIAM$.value?this.documentIAM$.value?.features?.all?.restricted:!1)?zr.RESTRICTED:this.documentIAM$.value?this.documentIAM$.value?.documentAccessType||zr.PUBLIC:null){case zr.PUBLIC:i=this.getUserFromDocumentIAM(this.user?.email,this.user?.userId),i||(i=this.getUserFromWorkspaceIAM(this.user?.email,this.user?.userId)),t=i?.role?.name||Lo.COMMENTER;break;case zr.RESTRICTED:i=this.getUserFromDocumentIAM(this.user?.email,this.user?.userId),i||(i=this.getUserFromWorkspaceIAM(this.user?.email,this.user?.userId)),t=i?.role?.name||null;break;default:break}return t}catch(e){this.loggingService.catch("Error in IamService getRole: ",e)}return null}isUserAdmin$(){return this.getRole$().pipe(ue(e=>e===Lo.ADMIN),xt())}isUserAdmin(){try{return this.getRole()===Lo.ADMIN}catch(e){return this.loggingService.catch("Error in IamService isUserAdmin: ",e),!1}}getUserFromDocumentIAM(e,t){try{if(e||t){let i;return e&&(i=this.documentIAM$.value?.users?.[It(e)]),!i&&t&&(i=this.documentIAM$.value?.users?.[It(t)]),i}else return}catch(i){this.loggingService.catch("Error in IamService getUserFromDocumentIAM: ",i)}}getUserFromWorkspaceIAM(e,t){try{if(e||t){let i;return e&&(i=this.workspaceIAM$.value?.users?.[It(e)]),!i&&t&&(i=this.workspaceIAM$.value?.users?.[It(t)]),i}else return}catch(i){this.loggingService.catch("Error in IamService getUserFromWorkspaceIAM: ",i)}}};o.\u0275fac=function(t){return new(t||o)(X(lt),X(We),X(dn),X($n),X(ct),X(Ft),X(x),X(Tn))},o.\u0275prov=Me({token:o,factory:o.\u0275fac,providedIn:"root"});let n=o;return n})();var UL="public",il=(()=>{let o=class o{constructor(e,t,i,a,l,s,d,g,u,b){this.authService=e,this.docService=t,this.loggingService=i,this.commonDbService=a,this.usersService=l,this.commentUtilsService=s,this.coreActionsService=d,this.functions=g,this.configService=u,this.contactService=b,this.currentUserPermissions$=new Se(null),this.permissionsCache$=new Se(null),this.permissionProvider$=new Se(null),this.REVOKE_DELAY_MS=3e3,this.pendingRevokeRequests=new Map,this.pendingRevokeTimeoutId=null,this.pendingRevokeUniqueId="",this.pendingRevokeUserId="";try{this.docService.setUserPermissionService(this),this.authService.setUserPermissionService(this),this.commentUtilsService.setUserPermissionService(this),this.contactService.setUserPermissionService(this)}catch(E){this.loggingService.catch("Error in UserPermissionService constructor:",E)}}ngOnDestroy(){try{this.pendingRevokeTimeoutId&&(clearTimeout(this.pendingRevokeTimeoutId),this.pendingRevokeTimeoutId=null)}catch(e){this.loggingService.catch("Error in UserPermissionService ngOnDestroy:",e)}}collectRevokeRequest(e,t,i,a,l,s){try{return e.find(g=>g.resourceId===i&&g.type===a&&g.organizationId===l&&g.userId===s)?(t.push({userId:s,resourceId:i,organizationId:l,type:a,hasAccess:!1}),e.filter(g=>!(g.resourceId===i&&g.type===a&&g.organizationId===l&&g.userId===s))):e}catch(d){return this.loggingService.catch("Error in UsersPermissionService collectRevokeRequest:",d),e}}hasUserContextAccess({userId:e,accessFields:t}){try{if(!this.getIsContextEnabled()||t.includes(U.DEFAULT_VELT_CONTEXT))return!0;let i=this.contactService.getUserAccessFieldsByUserId(e);return i?t.every(a=>i.includes(a)):!0}catch(i){return this.loggingService.catch("Error in UserPermissionService hasUserContextAccess:",i),!1}}organizationDetails(e){return Q(this,null,function*(){try{let t=yield this.commonDbService?.getData({feature:"organizationMetadata",properties:{organizationId:e}});return t&&t?.errorCode?{errorCode:_o.PERMISSION_DENIED,error:!0}:t&&!t?.metadata?{errorCode:_o.DOES_NOT_EXIST,error:!0}:{error:!1}}catch(t){return this.loggingService.catch("Error in UserPermissionService organizationDetails:",t),{errorCode:_o.SOMETHING_WENT_WRONG,error:!0}}})}documentDetails(i){return Q(this,arguments,function*({documentId:e,organizationId:t}){try{let a=yield this.commonDbService?.getData({feature:"documentMetadata",properties:{documentId:e,organizationId:t}});if(a&&a?.errorCode)return{errorCode:_o.PERMISSION_DENIED,error:!0};if(a&&!a?.metadata)return{errorCode:_o.DOES_NOT_EXIST,error:!0};let l=this.docService.getDocumentMetadata(e)??{};this.docService.setDocumentMetadata(e,f(f({},l),a?.metadata??{}));let s,d=a?.metadata?.veltFolderId;if(d)try{s=(yield this.commonDbService?.getData({feature:"folderMetadata",properties:{folderId:d,organizationId:t}}))?.folderIamConfig?.accessType}catch(g){this.loggingService.catch("Error fetching folder accessType for document:",g)}return s||(s=a?.docIamConfig?.accessType),{error:!1,accessType:s}}catch(a){return this.loggingService.catch("Error in UserPermissionService documentDetails:",a),{errorCode:_o.SOMETHING_WENT_WRONG,error:!0}}})}folderDetails(i){return Q(this,arguments,function*({folderId:e,organizationId:t}){try{let a=yield this.commonDbService?.getData({feature:"folderMetadata",properties:{folderId:e,organizationId:t}});return a&&a?.errorCode?{errorCode:_o.PERMISSION_DENIED,error:!0}:a&&!a?.metadata?{errorCode:_o.DOES_NOT_EXIST,error:!0}:{error:!1,accessType:a?.folderIamConfig?.accessType}}catch(a){return this.loggingService.catch("Error in UserPermissionService folderDetails:",a),{errorCode:_o.SOMETHING_WENT_WRONG,error:!0}}})}getUserPermissions(e){return Q(this,null,function*(){try{if(!this.authService.getUser())return this.loggingService.catch("User not set. [source: getUserPermissions]",void 0,void 0,!0),{};let t=this.extractResourceIds(e);if(!t.clientOrganizationId||!t.organizationId)return this.loggingService.catch("Client organization id or organization id not set during getUserPermissions",void 0,void 0,!0),{};let i=yield this.validateResources(t),[a,l]=yield this.fetchUserPermissionsFromDB(t),s=this.buildPermissionsResponse(t,i,a,l);return!e&&Object.keys(s).length>0&&this.setCurrentUserPermissions(s),s}catch(t){return this.loggingService.catch("Error in UserPermissionService getUserPermissions:",t),{}}})}extractResourceIds(e){let t=this.docService.getDocumentPaths(),i=this.docService.getDocumentIds();return{folderIds:e?.folderIds?.length?e.folderIds:t?.folderId?[t.folderId]:[],documentIds:e?.documentIds?.length?e.documentIds:i.map(a=>a.clientDocumentId),clientOrganizationId:e?.organizationId??t?.clientOrganizationId,organizationId:e?.organizationId??t?.clientOrganizationId?Pa(e?.organizationId??t?.clientOrganizationId??""):void 0}}validateResources(e){return Q(this,null,function*(){let{folderIds:t,documentIds:i,organizationId:a,clientOrganizationId:l}=e,s=[],d=[];a&&(s.push(this.organizationDetails(a)),d.push({id:l??"",type:"organization"})),t.forEach(b=>{s.push(this.folderDetails({folderId:Pr(b),organizationId:a??""})),d.push({id:b,type:"folder"})}),i.forEach(b=>{s.push(this.documentDetails({documentId:mi(b),organizationId:a??""})),d.push({id:b,type:"document"})});let[g,u]=yield Promise.all([Promise.allSettled(s),this.getDefaultDocumentAccessType()]);return k(f({},this.processValidationResults(g,d)),{defaultDocumentAccessType:u})})}getDefaultDocumentAccessType(){return Q(this,null,function*(){try{return(yield this.commonDbService?.getData({feature:"apiKeyMetadata",properties:{}}))?.defaultDocumentAccessType}catch(e){this.loggingService.catch("Error fetching defaultDocumentAccessType:",e);return}})}processValidationResults(e,t){let i=[],a=[],l,s={},d={};for(let g=0;g<e.length;g++){let u=e[g],b=t[g];if(u.status==="rejected"||u.status==="fulfilled"&&u.value.error){let A=u.status==="fulfilled"?u.value.errorCode??_o.SOMETHING_WENT_WRONG:_o.SOMETHING_WENT_WRONG,M={id:b.id,errorCode:A};switch(b.type){case"organization":if(l=M,A===_o.DOES_NOT_EXIST)throw new Error(`Organization with id '${b.id}' does not exist`);break;case"folder":i.push(M);break;case"document":a.push(M);break}}else if(u.status==="fulfilled")switch(b.type){case"folder":u.value.accessType&&(s[b.id]=u.value.accessType);break;case"document":u.value.accessType&&(d[b.id]=u.value.accessType);break}}return{failedFolderIds:i,failedDocumentIds:a,failedOrganizationId:l,folderAccessTypes:s,documentAccessTypes:d}}fetchUserPermissionsFromDB(e){return Q(this,null,function*(){let{folderIds:t,documentIds:i,organizationId:a}=e,l=[this.authService.getUser()?.userId??""],s=[...t.map(u=>Pr(u)),...i.map(u=>mi(u)),a??""],[d,g]=yield Promise.allSettled([this.usersService.getUsersFromDBWithBatching({userIds:l,organizationId:a}),this.usersService.getTemporaryUsersFromDBWithBatching({userIds:l,organizationId:a,resourceIds:s})]);return[d.status==="fulfilled"?d.value:[],g.status==="fulfilled"?g.value:[]]})}buildPermissionsResponse(e,t,i,a){let{folderIds:l,documentIds:s,clientOrganizationId:d,organizationId:g}=e,{failedFolderIds:u,failedDocumentIds:b,failedOrganizationId:E}=t,A={};return this.processRegularUserPermissions(A,i,l,s,d??"",g??"",u,b,E,t.folderAccessTypes,t.documentAccessTypes,t.defaultDocumentAccessType),this.processTemporaryUserPermissions(A,a),this.processContextPermissions(A),A}processContextPermissions(e){try{let t=this.authService.getUser()?.userId;if(t){let i=this.contactService.getUserAccessFieldsByUserId(t);i?.length&&(e[t]||(e[t]={}),e[t].context={accessFields:i})}}catch(t){this.loggingService.catch("Error in UserPermissionService processContextPermissions:",t);return}}processRegularUserPermissions(e,t,i,a,l,s,d,g,u,b,E,A){for(let M of t)for(let V of M)V?.user?.userId&&(e[V.user.userId]=k(f({},i.length&&{folders:this.buildFolderPermissions(i,V,d,b,A)}),{documents:this.buildDocumentPermissions(a,V,g,E,A),organization:{[l]:this.buildOrganizationPermission(s,V,u)}}))}getErrorMessage(e,t){try{switch(this.loggingService.log(`Error in UserPermissionService getErrorMessage: ${e} ${t}`),e){case _o.DOES_NOT_EXIST:return`${t} does not exist`;case _o.PERMISSION_DENIED:return`User does not have access to ${t}`;case _o.SOMETHING_WENT_WRONG:return"Something went wrong";default:return"Something went wrong"}}catch(i){return this.loggingService.catch("Error in UserPermissionService getErrorMessage:",i),"Something went wrong"}}buildFolderPermissions(e,t,i,a,l){return e.reduce((s,d)=>{let g=i.find(u=>u.id===d);return g?s[d]=f({error:this.getErrorMessage(g.errorCode,"folder"),errorCode:g.errorCode},g.errorCode===_o.PERMISSION_DENIED&&{accessType:a[d]??l??UL}):s[d]={accessRole:t.viewerFolderIds?.includes(Pr(d))?$s.VIEWER:$s.EDITOR,accessType:a[d]??l??UL},s},{})}buildDocumentPermissions(e,t,i,a,l){return e.reduce((s,d)=>{let g=i.find(u=>u.id===d);return g?s[d]=f({error:this.getErrorMessage(g.errorCode,"document"),errorCode:g.errorCode},g.errorCode===_o.PERMISSION_DENIED&&{accessType:a[d]??l??UL}):s[d]={accessRole:t.viewerDocumentIds?.includes(mi(d))?$s.VIEWER:$s.EDITOR,accessType:a[d]??l??UL},s},{})}buildOrganizationPermission(e,t,i){return i?{error:this.getErrorMessage(i.errorCode,"organization"),errorCode:i.errorCode}:{accessRole:t.viewerOrganizationIds?.includes(e)?$s.VIEWER:$s.EDITOR}}processTemporaryUserPermissions(e,t){for(let i of t)if(i?.userId)switch(this.ensureUserPermissionStructure(e,i.userId),i.type){case"folder":this.addTemporaryFolderPermission(e,i);break;case"document":this.addTemporaryDocumentPermission(e,i);break;case"organization":this.addTemporaryOrganizationPermission(e,i);break}}ensureUserPermissionStructure(e,t){e[t]||(e[t]={})}addTemporaryFolderPermission(e,t){let{userId:i,resourceId:a,role:l,expiresAt:s}=t;e[i].folders||(e[i].folders={}),e[i].folders[a]||(e[i].folders[a]={accessRole:l??$s.EDITOR,expiresAt:s})}addTemporaryDocumentPermission(e,t){let{userId:i,resourceId:a,role:l,expiresAt:s}=t;e[i].documents||(e[i].documents={}),e[i].documents[a]={accessRole:l??$s.EDITOR,expiresAt:s}}addTemporaryOrganizationPermission(e,t){let{userId:i,resourceId:a,role:l,expiresAt:s}=t;e[i].organization||(e[i].organization={}),e[i].organization[a]={accessRole:l??$s.EDITOR,expiresAt:s}}hasEditAccess({organizationId:e,folderId:t,documentId:i}){try{let a=!0,l=this.getCurrentUserPermissionsWithServerIds(),s=this.authService.getUser()?.userId??"";return l&&(e&&typeof e=="string"&&l?.[s]?.organization?.[e]&&(l?.[s]?.organization?.[e]?.accessRole===$s.VIEWER||l?.[s]?.organization?.[e]?.errorCode===_o.PERMISSION_DENIED)&&(a=!1),t&&typeof t=="string"&&l?.[s]?.folders?.[t]&&(l?.[s]?.folders?.[t]?.accessRole===$s.VIEWER||l?.[s]?.folders?.[t]?.errorCode===_o.PERMISSION_DENIED)&&(a=!1),i&&typeof i=="string"&&l?.[s]?.documents?.[i]&&(l?.[s]?.documents?.[i]?.accessRole===$s.VIEWER||l?.[s]?.documents?.[i]?.errorCode===_o.PERMISSION_DENIED)&&(a=!1)),a}catch{return!0}}getCurrentUserPermissions$(){return this.currentUserPermissions$.asObservable().pipe(xt(Jt))}getCurrentUserPermissions(){return this.currentUserPermissions$.value}refactorPermissionsWithServerIds(e){try{let t=JSON.parse(JSON.stringify(e??{})),i=this.authService.getUser()?.userId??"";if(t?.[i]){let a=this.docService.getDocumentPaths()?.clientOrganizationId??"";if(t?.[i]?.organization?.[a]){let l=Pa(a);t[i].organization&&(t[i].organization[l]=t[i].organization[a],delete t[i].organization[a])}t?.[i]?.folders&&(t[i].folders=Object.fromEntries(Object.entries(t?.[i]?.folders??{}).map(([l,s])=>[Pr(l),s]))),t?.[i]?.documents&&(t[i].documents=Object.fromEntries(Object.entries(t?.[i]?.documents??{}).map(([l,s])=>[mi(l),s])))}return t}catch(t){return this.loggingService.catch("Error in UsersPermissionService refactorPermissionsWithServerIds:",t),e}}getCurrentUserPermissionsWithServerIds$(){return this.currentUserPermissions$.asObservable().pipe(ue(e=>this.refactorPermissionsWithServerIds(e)),xt(Jt))}getCurrentUserPermissionsWithServerIds(){return this.refactorPermissionsWithServerIds(this.currentUserPermissions$.value)}setCurrentUserPermissions(e){try{this.loggingService.log("%c[WB] Calling UsersService FUNCTION: setCurrentUserPermissions","color: green;");let t=null;e&&(t=JSON.parse(JSON.stringify(e))),this.currentUserPermissions$.next(t)}catch(t){this.loggingService.catch("Error in UsersPermissionService setCurrentUserPermissions:",t)}}getIsContextEnabled(){return this.loggingService.log("%c[WB] Calling FUNCTION: getIsContextEnabled","color: green;"),this.permissionProvider$.value?.isContextEnabled??!1}setPermissionProvider(e){try{this.loggingService.log("%c[WB] Calling UsersService FUNCTION: setPermissionProvider","color: green;"),this.permissionProvider$.next(e)}catch(t){this.loggingService.catch("Error in UsersPermissionService setPermissionProvider:",t)}}get isRevokeAccessOnDocumentUnsetEnabled(){return this.permissionProvider$.value?.revokeAccessOn?.some(e=>e.type===tS.DOCUMENT_UNSET)??!1}get isRevokeAccessOnUserLogoutEnabled(){return this.permissionProvider$.value?.revokeAccessOn?.some(e=>e.type===tS.USER_LOGOUT)??!1}get isRevokeOrganizationAccessOnUserLogoutEnabled(){return this.permissionProvider$.value?.revokeAccessOn?.some(e=>e.type===tS.USER_LOGOUT&&e.revokeOrganizationAccess)??!1}get isRevokeOrganizationAccessOnDocumentUnsetEnabled(){return this.permissionProvider$.value?.revokeAccessOn?.some(e=>e.type===tS.DOCUMENT_UNSET&&e.revokeOrganizationAccess)??!1}getPermissionProviderRetryConfig(){return this.permissionProvider$.value?.retryConfig??{retryCount:0,retryDelay:0}}revokeAccessOnUserLogout(){return Q(this,null,function*(){let e=ot();try{if(this.isRevokeAccessOnUserLogoutEnabled){let t=[],i=this.authService.getUser()?.userId??"";if((this.getPermissionsCache()??[]).forEach(l=>{l.userId===i&&l.hasAccess&&(l.type===oa.ORGANIZATION?this.isRevokeOrganizationAccessOnUserLogoutEnabled&&t.push(k(f({},l),{hasAccess:!1})):t.push(k(f({},l),{hasAccess:!1})))}),t.length>0){this.coreActionsService.triggerAction(Qe.PERMISSION_PROVIDER,{event:K.Events.PermissionProvider.REVOKE_ACCESS_ON_USER_LOGOUT_FORMED,timestamp:new Date().getTime(),uniqueId:e,methodName:ro.REVOKE_ACCESS_ON_USER_LOGOUT,source:"internal",payload:{requests:t}}),this.setPermissionsCache([]),this.coreActionsService.triggerAction(Qe.PERMISSION_PROVIDER,{event:K.Events.PermissionProvider.REVOKE_ACCESS_ON_USER_LOGOUT_TRIGGERED,timestamp:new Date().getTime(),uniqueId:e,methodName:ro.REVOKE_ACCESS_ON_USER_LOGOUT,source:"internal",payload:{requests:t}});let l=yield this.revokeAccess({requests:t,userId:this.authService.getUser()?.userId??""});l.success?this.coreActionsService.triggerAction(Qe.PERMISSION_PROVIDER,{event:K.Events.PermissionProvider.REVOKE_ACCESS_ON_USER_LOGOUT_RESULT,timestamp:new Date().getTime(),uniqueId:e,methodName:ro.REVOKE_ACCESS_ON_USER_LOGOUT,source:"internal",payload:{result:{data:l,success:!0,statusCode:200}}}):this.coreActionsService.triggerAction(Qe.PERMISSION_PROVIDER,{event:K.Events.PermissionProvider.REVOKE_ACCESS_ON_USER_LOGOUT_ERROR,timestamp:new Date().getTime(),uniqueId:e,methodName:ro.REVOKE_ACCESS_ON_USER_LOGOUT,source:"internal",payload:{result:{data:l,success:!1,statusCode:500}}})}}}catch(t){this.coreActionsService.triggerAction(Qe.PERMISSION_PROVIDER,{event:K.Events.PermissionProvider.REVOKE_ACCESS_ON_USER_LOGOUT_ERROR,timestamp:new Date().getTime(),uniqueId:e,methodName:ro.REVOKE_ACCESS_ON_USER_LOGOUT,source:"internal",payload:{error:t}}),this.loggingService.catch("Error in UsersPermissionService revokeAccessOnUserLogout:",t)}})}getRevokeKey(e){try{return`${e.userId}_${e.resourceId}_${e.type}_${e.organizationId}`}catch(t){return this.loggingService.catch("Error in UsersPermissionService getRevokeKey:",t),""}}cancelPendingRevokes(e){try{e.forEach(t=>{let i=this.getRevokeKey({userId:t.userId,resourceId:t.resource.id,type:t.resource.type,organizationId:t.resource.organizationId});this.pendingRevokeRequests.has(i)&&this.pendingRevokeRequests.delete(i)}),this.pendingRevokeRequests.size===0&&this.pendingRevokeTimeoutId&&(clearTimeout(this.pendingRevokeTimeoutId),this.pendingRevokeTimeoutId=null)}catch(t){this.loggingService.catch("Error in UsersPermissionService cancelPendingRevokes:",t)}}flushPendingRevokes(){return Q(this,null,function*(){let e=this.pendingRevokeUniqueId,t=this.pendingRevokeUserId;try{let i=Array.from(this.pendingRevokeRequests.values());if(this.pendingRevokeRequests.clear(),this.pendingRevokeTimeoutId=null,this.pendingRevokeUniqueId="",this.pendingRevokeUserId="",i.length===0)return;let a=this.getPermissionsCache()??[];i.forEach(d=>{a=a.filter(g=>!(g.resourceId===d.resourceId&&g.type===d.type&&g.organizationId===d.organizationId&&g.userId===d.userId))}),this.setPermissionsCache(a);let l=this.docService.getDocContext(),s=yield this.revokeAccess({requests:i,userId:t,currentContext:l});s.success?this.coreActionsService.triggerAction(Qe.PERMISSION_PROVIDER,{event:K.Events.PermissionProvider.REVOKE_ACCESS_ON_DOCUMENT_UNSET_RESULT,timestamp:new Date().getTime(),uniqueId:e,methodName:ro.REVOKE_ACCESS_ON_DOCUMENT_UNSET,source:"internal",payload:{result:{data:s,success:!0,statusCode:200}}}):this.coreActionsService.triggerAction(Qe.PERMISSION_PROVIDER,{event:K.Events.PermissionProvider.REVOKE_ACCESS_ON_DOCUMENT_UNSET_ERROR,timestamp:new Date().getTime(),uniqueId:e,methodName:ro.REVOKE_ACCESS_ON_DOCUMENT_UNSET,source:"internal",payload:{result:{data:s,success:!1,statusCode:500}}})}catch(i){this.coreActionsService.triggerAction(Qe.PERMISSION_PROVIDER,{event:K.Events.PermissionProvider.REVOKE_ACCESS_ON_DOCUMENT_UNSET_ERROR,timestamp:new Date().getTime(),uniqueId:e,methodName:ro.REVOKE_ACCESS_ON_DOCUMENT_UNSET,source:"internal",payload:{error:i}}),this.loggingService.catch("Error in UsersPermissionService flushPendingRevokes:",i)}})}revokeAccessOnDocumentUnset(a){return Q(this,arguments,function*({documentIds:e,folderId:t,context:i}){let l=ot();try{if(this.isRevokeAccessOnDocumentUnsetEnabled){let s=[],d=this.docService.getOrganizationConfig()?.clientOrganizationId??"",g=this.authService.getUser()?.userId??"",u=this.getPermissionsCache()??[];e.forEach(b=>{u=this.collectRevokeRequest(u,s,b.clientDocumentId,oa.DOCUMENT,d,g)}),t&&(u=this.collectRevokeRequest(u,s,t,oa.FOLDER,d,g)),d&&this.isRevokeOrganizationAccessOnDocumentUnsetEnabled&&(u=this.collectRevokeRequest(u,s,d,oa.ORGANIZATION,d,g)),i&&this.getIsContextEnabled()&&FN({input:i}).forEach(E=>{let A=JSON.stringify(E.access);u=this.collectRevokeRequest(u,s,A,oa.CONTEXT,d,g)}),this.setPermissionsCache(u),s.length>0&&(this.coreActionsService.triggerAction(Qe.PERMISSION_PROVIDER,{event:K.Events.PermissionProvider.REVOKE_ACCESS_ON_DOCUMENT_UNSET_FORMED,timestamp:new Date().getTime(),uniqueId:l,methodName:ro.REVOKE_ACCESS_ON_DOCUMENT_UNSET,source:"internal",payload:{requests:s}}),this.coreActionsService.triggerAction(Qe.PERMISSION_PROVIDER,{event:K.Events.PermissionProvider.REVOKE_ACCESS_ON_DOCUMENT_UNSET_TRIGGERED,timestamp:new Date().getTime(),uniqueId:l,methodName:ro.REVOKE_ACCESS_ON_DOCUMENT_UNSET,source:"internal",payload:{requests:s}}),s.forEach(b=>{this.pendingRevokeRequests.set(this.getRevokeKey(b),b)}),this.pendingRevokeUniqueId=l,this.pendingRevokeUserId=g,this.pendingRevokeTimeoutId&&clearTimeout(this.pendingRevokeTimeoutId),this.pendingRevokeTimeoutId=setTimeout(()=>this.flushPendingRevokes(),this.REVOKE_DELAY_MS))}}catch(s){this.coreActionsService.triggerAction(Qe.PERMISSION_PROVIDER,{event:K.Events.PermissionProvider.REVOKE_ACCESS_ON_DOCUMENT_UNSET_ERROR,timestamp:new Date().getTime(),uniqueId:l,methodName:ro.REVOKE_ACCESS_ON_DOCUMENT_UNSET,source:"internal",payload:{error:s}}),this.loggingService.catch("Error in UsersPermissionService revokeAccessOnDocumentUnset:",s)}})}getAccess(i){return Q(this,arguments,function*({requests:e,userId:t}){let a=Gr(this.functions,Wr({url:En?.cloudFunction?.sdkProxy,apiProxyDomain:this.configService?.getApiProxyDomain()}));return yield _l({methodName:"getAccess",data:{type:"getAccess",data:e,metadata:{retryConfig:this.getPermissionProviderRetryConfig()}},getSdkProxy:a,userId:t})})}revokeAccess(a){return Q(this,arguments,function*({requests:e,userId:t,currentContext:i}){let l=Gr(this.functions,Wr({url:En?.cloudFunction?.sdkProxy,apiProxyDomain:this.configService?.getApiProxyDomain()}));return yield _l({methodName:"revokeAccess",data:{type:"revokeAccess",data:e,metadata:f({retryConfig:this.getPermissionProviderRetryConfig()},i?.access&&{currentContext:i})},getSdkProxy:l,userId:t})})}onResourceAccessRequired(s){return Q(this,arguments,function*({requests:e,uniqueId:t,methodName:i,userId:a,fromCache:l=!0}){try{if(!e?.length)return;let d=[],g=this.getPermissionsCache()??[];if(!this.forceRefreshPermissions()&&l&&(e.forEach(u=>{let b=g?.find(E=>E.resourceId===u.resource.id&&E.type===u.resource.type&&E.userId===u.userId&&E.organizationId===u.resource.organizationId);b&&d.push(b)}),d.length>0&&(e=e.filter(u=>!d.find(b=>b.resourceId===u.resource.id&&b.type===u.resource.type&&b.userId===u.userId&&b.organizationId===u.resource.organizationId)))),e.length>0){this.coreActionsService.triggerAction(Qe.PERMISSION_PROVIDER,{event:K.Events.PermissionProvider.RESOURCE_ACCESS_REQUEST_TRIGGERED,timestamp:new Date().getTime(),uniqueId:t,methodName:i,source:"internal",payload:{requests:e,fromCache:l}});let u=yield this.getAccess({requests:e,userId:this.authService.getUser()?.userId??a??""});return this.coreActionsService.triggerAction(Qe.PERMISSION_PROVIDER,{event:K.Events.PermissionProvider.RESOURCE_ACCESS_RESULT,timestamp:new Date().getTime(),uniqueId:t,methodName:i,source:"internal",payload:{result:u}}),u?.success&&u?.data?.length&&(this.setPermissionsCache([...g,...u.data]),u.data=[...d,...u.data]),u}else if(d.length>0)return this.coreActionsService.triggerAction(Qe.PERMISSION_PROVIDER,{event:K.Events.PermissionProvider.RESOURCE_ACCESS_RESULT_FROM_CACHE,timestamp:new Date().getTime(),methodName:i,source:"internal",uniqueId:t,payload:{results:{data:d,success:!0,statusCode:200}}}),{data:d,success:!0,statusCode:200};return}catch(d){this.loggingService.catch("Error in UsersPermissionService onResourceAccessRequired:",d),this.coreActionsService.triggerAction(Qe.PERMISSION_PROVIDER,{event:K.Events.PermissionProvider.RESOURCE_ACCESS_ERROR,timestamp:new Date().getTime(),methodName:i,source:"internal",uniqueId:t,payload:{error:d,requests:e,fromCache:l}});return}})}getPermissionsCache(){return this.forceRefreshPermissions()?[]:this.permissionsCache$.getValue()}forceRefreshPermissions(){return this.getPermissionProvider()?.forceRefresh??!1}setPermissionsCache(e){try{let t=new Map;e.forEach(a=>{let l=`${a.userId}_${a.resourceId}_${a.organizationId}_${a.type}`;t.set(l,a)});let i=JSON.parse(JSON.stringify(Array.from(t.values())));this.permissionsCache$.next(i)}catch(t){this.loggingService.catch("Error in UsersPermissionService setPermissionsCache:",t)}}isPermissionProviderAvailable(){try{return!!this.permissionProvider$.getValue()}catch(e){return this.loggingService.catch("Error in UsersPermissionService isPermissionProviderAvailable:",e),!1}}getPermissionProvider(){try{return this.permissionProvider$.getValue()}catch(e){return this.loggingService.catch("Error in UsersPermissionService getPermissionProvider:",e),null}}getPermissionProvider$(){return this.permissionProvider$.asObservable()}};o.\u0275fac=function(t){return new(t||o)(X(We),X(ct),X(x),X(Tn),X(An),X(cv),X(tr),X(Do),X(Ft),X(dn))},o.\u0275prov=Me({token:o,factory:o.\u0275fac,providedIn:"root"});let n=o;return n})();var Hi=(()=>{let o=class o{constructor(e,t,i,a,l,s,d,g,u,b,E,A){this.afAuth=e,this.analyticsService=t,this.authService=i,this.configService=a,this.databaseService=l,this.commonDbService=s,this.docService=d,this.domService=g,this.emojiService=u,this.iamService=b,this.loggingService=E,this.userPermissionService=A,this.documentPaths=null,this.reactionAnnotationById$=new Se({}),this.customReactions$=new Se({}),this.commentService=null,this.darkMode$=new Se(null),this.loggingService.log("%c[WB] Creating CLASS: ReactionService","color: blue;"),this.analyticsService.setReactionService(this),this.authService.setReactionService(this),this.databaseService.getDb().pipe($e(M=>!!M),ut(1)).subscribe(M=>{M&&this.getAllReactionAnnotations(void 0,void 0,!0).subscribe()},M=>{this.loggingService.catch("Error in ReactionService getDb subscription: ",M)})}setCommentService(e){this.loggingService.log("%c[WB] Calling FUNCTION: setCommentService","color: green;");try{this.commentService=e}catch(t){this.loggingService.catch("Error in ReactionService setCommentService: ",t)}}clearCache(){this.loggingService.log("%c[WB] Calling FUNCTION: clearCache in ReactionService","color: green;");try{this.reactionAnnotationById$.next({}),this.customReactions$.next({}),this.documentPaths=null}catch(e){this.loggingService.catch("Error in ReactionService clearCache: ",e)}}getAllReactionAnnotations(e,t,i,a,l){this.loggingService.log("%c[WB] Calling FUNCTION: getAllReactionAnnotations","color: green;");let s,d;try{if(e&&(d=`${Qn(e)}`),t&&typeof t=="object"){let g=Oi(t);s=Qn(JSON.stringify(g))}}catch(g){this.loggingService.catch("Error in ReactionService getAllReactionAnnotations: ",g)}return fr(this.afAuth).pipe($e(g=>!!g),_e(g=>this.isFeatureAllowed({firebaseUser:g,annotations:[],filteredAnnotations:[]})),_e(g=>g.featureAllowed?this.iamService.isUserAllowed$().pipe(ue(u=>(g.featureAllowed=u,g))):le(g)),_e(g=>g.featureAllowed?le(g).pipe(_e(u=>this.docService.getDocumentPaths$().pipe(ue(b=>(this.documentPaths=b,u.documentPaths=b,u)))),_e(u=>d?this.getDataFromDocumentIds([d]).pipe(ue(b=>(u.annotations=b||[],f({},u)))):this.docService.getDocumentIds$().pipe(_e(b=>{let E=b?.length>0?b.map(A=>A.documentId):[this.documentPaths?.documentId??""];return this.getDataFromDocumentIds(E).pipe(ue(A=>(u.annotations=A||[],f({},u))))}))),_e(u=>this.docService.getLocation$().pipe(ue(b=>(u.location=b,u)))),_e(u=>this.docService.getLocations$().pipe(ue(b=>(u.customLocations=b,u)))),ue(u=>{if(u.filteredAnnotations=[],d&&!s)return u.filteredAnnotations=u.annotations?.slice(),u;{let b=[];return s?b.push(s):(b.push(u?.location?.locationId),b.push(...Object.values(u?.customLocations||[]).map(E=>E.locationId))),u.filteredAnnotations=this.filterAnnotationsByLocationIds(u?.annotations,b),u}}),_e(u=>i?le(u):u?.annotations?.length?this.domService.onWindowResize$().pipe(ue(()=>u)):le(u)),_e(u=>i?le(u):le(u)),ue(u=>u),_e(u=>u?.filteredAnnotations?le(u?.filteredAnnotations||[]):le([]))):le([])),xt(Jt))}isFeatureAllowed(e){return this.configService.getConfig$().pipe($e(t=>!!t),ue(t=>k(f({},e),{config:t})),_e(t=>this.authService.getUser$().pipe(ue(i=>k(f({},t),{user:i})))),_e(t=>Ao(t.config,t.user,je.REACTION)?le(k(f({},t),{featureAllowed:!0})):(this.loggingService.warn("Reaction feature is not allowed."),le(k(f({},t),{featureAllowed:!1})))),xt((t,i)=>t?.featureAllowed===i?.featureAllowed))}getDataFromDocumentIds(e,t){return this.getDataFromDocuments({documentIds:e,filters:t})}getDataFromDocuments(e){if(this.configService?.getApiKey()){let{documentIds:t,filters:i}=e;if(t?.some(d=>!d)||!this.documentPaths)return le([]);let a=this.docService.getDocumentPaths()?.veltFolderId,l=le([]),s={useCollectionGroup:!0,isCollection:!0,useQuery:!0};if(this.commonDbService.shouldUseFirestore()||(s.documentId=t?.length?t[0]:void 0,s.organizationId=this.documentPaths?.organizationId),this.userPermissionService?.getIsContextEnabled()){let d=[U.DEFAULT_VELT_CONTEXT,...this.docService.getProcessedDocContext()],g=[];for(let u=0;u<(d?.length??0);u+=U.LISTENER_CONTEXT_BATCH_SIZE)g.push(d?.slice(u,u+U.LISTENER_CONTEXT_BATCH_SIZE)??[]);l=pn(g.map(u=>this.commonDbService.dbListener({feature:"allReactions",properties:k(f({},s),{firestoreQuery:[_r(ft("metadata.apiKey","==",this.configService?.getApiKey()),ft("metadata.documentId","in",t),ft("metadata.organizationId","==",this.documentPaths?.organizationId),...a?[ft("metadata.veltFolderId","==",a)]:[],...u?.length?[ft("context.accessFields","array-contains-any",u)]:[])]})}).pipe(la()))).pipe(ue(u=>Ra(u)))}else{let d=[];for(let g=0;g<(t?.length??0);g+=U.LISTENER_BATCH_SIZE)d.push(t?.slice(g,g+U.LISTENER_BATCH_SIZE)??[]);l=pn(d.map(g=>this.commonDbService.dbListener({feature:"allReactions",properties:k(f({},s),{firestoreQuery:[_r(ft("metadata.apiKey","==",this.configService?.getApiKey()),ft("metadata.documentId","in",g),ft("metadata.organizationId","==",this.documentPaths?.organizationId),...a?[ft("metadata.veltFolderId","==",a)]:[])]})}).pipe(la()))).pipe(ue(g=>Ra(g)))}return l.pipe(ue(d=>({data:d?.data,operation:d?.operation})),ue(({data:d,operation:g})=>{let u=[];return d&&(u=Object.values(d??{}).filter(b=>typeof b=="object")),u?.forEach(b=>{this.sanitizeReactionAnnotation(b)}),{data:u,operation:g}}),ue(({data:d,operation:g})=>{if(!t)return{data:d,documentMap:{},operation:g};let u=d.reduce((b,E)=>{let A=E.metadata?.documentId;return A&&(b[A]||(b[A]=[]),b[A].push(E)),b},{});return{data:d,documentMap:u,operation:g}}),ue(({data:d,documentMap:g,operation:u})=>{if(!i)if(u?.type==="removed"){if(u?.ids?.length){let b=this.reactionAnnotationById$.value;u?.ids?.forEach(E=>{delete b?.[E]}),this.reactionAnnotationById$.next(b)}}else Object.entries(g??{}).forEach(([b,E])=>{this.setReactionAnnotationsByOrganizationIdAndDocumentId({organizationId:this.documentPaths?.organizationId,documentId:b,annotations:E})});return d}),Jn(d=>(this.loggingService.catch("Error in ReactionService getDataFromDocumentId: ",d),le([]))))}else return le([])}setReactionAnnotationsByOrganizationIdAndDocumentId({organizationId:e,documentId:t,annotations:i,queryHash:a}){try{if(t){e||(e=U.NO_ORGANIZATION_ID),a||(a=U.DEFAULT_QUERY_HASH);let l={};i?.forEach(d=>{d?.annotationId&&(l[d?.annotationId]=d)});let s=f(f({},this.reactionAnnotationById$.value),l);this.reactionAnnotationById$.next(s)}}catch(l){this.loggingService.catch("Error in ReactionService setReactionAnnotationsByOrganizationIdAndDocumentId:",l)}}getReactionAnnotationsByOrganizationIdAndDocumentId({organizationId:e,documentId:t}){try{let i={};return Object.values(this.reactionAnnotationById$.value??{}).forEach(a=>{a?.metadata?.documentId==t&&a?.metadata?.organizationId==e&&(i[a?.annotationId]=a)}),Object.values(i)}catch(i){return this.loggingService.catch("Error in ReactionService getReactionAnnotationsByOrganizationIdAndDocumentId:",i),[]}}getLocations$(){return this.docService.getLocation$().pipe(_e(e=>this.docService.getLocations$().pipe(ue(t=>({location:e,locations:t})))),ue(e=>{let t=[];return t.push(e?.location?.locationId),t.push(...Object.values(e.locations||[]).map(i=>i.locationId)),t||[]}))}filterAnnotationsByLocationIds(e,t){try{return e.filter(i=>t.includes(i.locationId))}catch(i){return this.loggingService.catch("Error in ReactionService filterAnnotationsByLocations:",i),[]}}getAnnotationById(e,t){try{let i=this.reactionAnnotationById$.value?.[e];if(i){let{documentId:a,organizationId:l}=t||{};if(a&&i.metadata?.documentId!==a||l&&i.metadata?.organizationId!==l)return}return i}catch(i){this.loggingService.catch("Error in ReactionService getAnnotationById: ",i);return}}getBaseMetadataFromReactionAnnotationId(e){try{let t=this.reactionAnnotationById$.value?.[e];return t?t.metadata:void 0}catch(t){this.loggingService.catch("Error in ReactionService getBaseMetadataFromReactionAnnotationId: ",t);return}}getReactionAnnotationByAnnotationId(e,t){try{return this.reactionAnnotationById$.pipe(ue(()=>this.getAnnotationById(e,t)),_e(i=>i?le(i):le(i)))}catch(i){return this.loggingService.catch("Error in ReactionService getReactionAnnotationByAnnotationId: ",i),le(void 0)}}getReactionAnnotationsBySectionId(e){try{return this.reactionAnnotationById$.pipe(_e(t=>this.docService.getDocumentPaths$().pipe(ue(i=>({documentPaths:i,sectionId:e,reactionAnnotationsMap:t})))),_e(t=>{let i=tl(e,["id","data-id"]);if(i){let a=this.docService.getAdditionLocationFromElement(i);if(a){let l=this.docService.genarateLocationId(a);return this.docService.getLocations$().pipe(ue(s=>{let g=Object.values(s||{}).find(u=>u.locationId===l||a?.id&&u.location.id===a.id);return k(f({},t),{additionalLocation:g,locationOnElement:!!a})}))}}return le(k(f({},t),{additionalLocation:null,element:i}))}),_e(t=>t?.locationOnElement?le(t):this.docService.getLocation$().pipe(ue(i=>k(f({},t),{location:i})))),ue(({documentPaths:t,location:i,additionalLocation:a,locationOnElement:l,element:s})=>{let d=null,g=this.docService.getAdditionalDocumentIdFromElement(s),u=g?this.docService.generateDocumentId(g):t?.documentId,b=t?.organizationId;if(u){let E=this.getReactionAnnotationsByOrganizationIdAndDocumentId({organizationId:b,documentId:u});if(E){d=[];for(let A of E)A?.targetElementId===e&&(l?a&&s0({location:a?.location,locationId:a?.locationId},{location:A.location,locationId:A.locationId})&&d.push(A):i?s0({location:i?.location,locationId:i?.locationId},{location:A.location,locationId:A.locationId})&&d.push(A):A?.locationId||d.push(A))}}return d}))}catch(t){return this.loggingService.catch("Error in ReactionService getReactionAnnotationsBySectionId: ",t),le(null)}}addOrUpdateReaction(e,t,i,a,l,s,d,g){return Q(this,null,function*(){try{let u=t?.map(b=>this.getAnnotationById(b)).find(b=>b?.icon===e);if(u){if(!d||d==="delete")return yield this.updateUserInReaction(u)}else if(!d||d==="add")return yield this.addReaction(void 0,e,i,a,l,s,g)}catch(u){this.loggingService.catch("Error in ReactionService addOrUpdateReaction: ",u)}})}addReaction(e,t,i,a,l,s,d){return Q(this,null,function*(){this.loggingService.log("%c[WB] Calling FUNCTION: addReaction","color: green;");try{let g=this.authService.getUser();if(g)if(g.isReadOnly||g.isAnonymous)this.loggingService.catch("Anonymous/Readonly users cannot add reactions.");else{let u=new dL;if(u.from=g,u.lastUpdated=this.timestamp,u.reactions=[],u.reactions.push({from:g,lastUpdated:this.timestamp}),a&&(u.targetElementId=a),l){u.commentAnnotationId=l;let b=this.commentService?.getAnnotationById(l);if(b?.context?.access&&b?.context?.accessFields){if(!this.userPermissionService?.hasUserContextAccess({userId:g.userId,accessFields:b.context.accessFields})){this.loggingService.catch("User does not have context access to add reaction annotation.",void 0,void 0,!0);return}u.context={access:b.context.access,accessFields:b.context.accessFields}}}if(this.setLocationToReactionAnnotation(u),u.pageInfo=to(),u.pageInfo&&(u.pageInfo.screenWidth=this.domService.getCurrentWindowSizeValue()?.screenWidth),t)if(u.icon=t,s)u.iconUrl=s?.url,u.iconEmoji=s?.emoji;else{let b=this.customReactions$.value;if(b){let E=b[t];E?.url&&(u.iconUrl=E?.url),E?.emoji&&(u.iconEmoji=E?.emoji)}}return i&&(u.location={},u.location=f({},i),u.locationId=this.docService.genarateLocationId(u.location)),yield this.saveReactionToDb(u)}}catch(g){this.loggingService.catch("Error in ReactionService addReaction: ",g)}})}setLocationToReactionAnnotation(e){try{let t=this.docService.getLocation();t?(e.locationId=t.locationId,e.location=t.location):(delete e.locationId,delete e.location);try{let i;e.targetElement?.xpath?i=this.domService.getElementFromXPath(e.targetElement.xpath):e.targetElementId&&(i=tl(e.targetElementId,["id","data-id"]));let a=this.docService.getAdditionLocationFromElement(i);if(a){let l=this.docService.addLocation({location:a,source:"internal"});l?.[0]&&(e.locationId=l[0].locationId,e.location=l[0].location)}}catch{}}catch(t){this.loggingService.catch("Error in ReactionService setLocationToReactionAnnotation:",t)}}getElementForReactionAnnotation(e){try{let t;return e.targetElementId&&(t=tl(e.targetElementId,["id","data-id"])),t}catch(t){return this.loggingService.catch("Error in ReactionService getElementForReactionAnnotation: ",t),null}}saveReactionToDb(e){return Q(this,null,function*(){this.loggingService.log("%c[WB] Calling FUNCTION: saveReactionToDb","color: green;");try{if(this.authService.getUser()){let t=yield this.docService.getDocumentPaths$().pipe($e(a=>!!a),ut(1)).toPromise();if(!t)throw new Error("Document paths not found.");if(this.documentPaths=t,this.loggingService.log(this.documentPaths),!(yield this.databaseService.getDb().pipe($e(a=>!!a),ut(1)).toPromise()))throw new Error("Database not found.");if(this.documentPaths?.reaction){if(e.annotationId=this.commonDbService.generateDocumentId(),e.pageInfo,!e?.metadata?.documentId){e?.metadata||(e.metadata={});let g=this.getElementForReactionAnnotation(e),u=this.docService.getBaseMetadata("reaction",{commentAnnotationId:e.commentAnnotationId,element:g});e.metadata=f(f({},e?.metadata),u)}let a=JSON.parse(JSON.stringify(e));a.position=null;let{documentId:l,organizationId:s}=this.getDocumentIdAndOrganizationIdFromReactionAnnotation(e),d=e.commentAnnotationId?void 0:{annotationData:a,actionType:"add",notificationSource:"reaction"};return yield this.commonDbService.setData({feature:"reaction",properties:{id:e.annotationId,documentId:l,organizationId:s},data:a,extraData:d}),a}else return}}catch(t){this.loggingService.catch("Error in ReactionService saveReactionToDb: ",t)}})}getDocumentIdAndOrganizationIdFromReactionAnnotation(e){try{return{documentId:e?.metadata?.documentId,organizationId:e?.metadata?.organizationId}}catch(t){return this.loggingService.catch("Error in ReactionService getDocumentIdAndOrganizationIdFromReactionAnnotation: ",t),{}}}updateUserInReaction(e){return Q(this,null,function*(){try{let t=this.authService.getUser();if(t)return e?.reactions||(e.reactions=[]),e?.reactions?.find(a=>a?.from?.userId===t?.userId)?e.reactions=e?.reactions?.filter(a=>a?.from?.userId!==t?.userId):e.reactions.push({from:t,lastUpdated:this.timestamp}),e.reactions.length?yield this.updateReaction(e):yield this.deleteReactionPinAnnotation(e?.annotationId),e}catch(t){this.loggingService.catch("Error in ReactionService updateUserInReaction: ",t)}})}removeUserFromReaction(e){this.loggingService.log("%c[WB] Calling FUNCTION: removeUserFromReaction","color: green;");try{let t=this.authService.getUser();t&&(e?.reactions||(e.reactions=[]),e.reactions=e?.reactions?.filter(i=>i?.from?.userId!==t?.userId),this.updateReaction(e))}catch(t){this.loggingService.catch("Error in ReactionService removeUserFromReaction: ",t)}}updateReaction(e,t,i){return Q(this,null,function*(){this.loggingService.log("%c[WB] Calling FUNCTION: updateReaction","color: green;");try{if(this.authService.getUser()){if(e?.targetElement?.xpath){let d=this.domService.getXPath(e.targetElement.xpath);if(d){let g=d.iterateNext();g&&(Zr(g)||(e.targetElement=null))}}let a=JSON.parse(JSON.stringify(e));if(a.position=null,a.lastUpdated=this.timestamp,!a?.metadata?.documentId){a?.metadata||(a.metadata={});let d=this.docService.getBaseMetadata("reaction",{commentAnnotationId:e.commentAnnotationId});a.metadata=f(f({},a?.metadata),d)}let{documentId:l,organizationId:s}=a?.metadata||{};return i?yield this.commonDbService.updateData({feature:"reaction",properties:{id:e.annotationId,documentId:l,organizationId:s},data:JSON.parse(JSON.stringify(a))}):yield this.commonDbService.setData({feature:"reaction",properties:{id:e.annotationId,documentId:l,organizationId:s},data:JSON.parse(JSON.stringify(a))}),a}}catch(a){this.loggingService.catch("Error in ReactionService updateReaction: ",a)}})}deleteReactionPinAnnotation(e,t){return Q(this,null,function*(){try{let i=this.getAnnotationById(e),{documentId:a,organizationId:l}=this.getDocumentIdAndOrganizationIdFromReactionAnnotation(i),s=i&&!i.commentAnnotationId?{annotationData:i,actionType:"delete",notificationSource:"reaction"}:void 0;yield this.commonDbService.deleteData({feature:"reaction",properties:{id:e,documentId:a,organizationId:l},extraData:s})}catch(i){this.loggingService.catch("Error in ReactionService deleteReactionPinAnnotation: ",i)}})}setCustomReactions(e){try{this.loggingService.log("%c[WB] Calling FUNCTION: setCustomReactions","color: green;"),this.customReactions$.next(e),this.emojiService.setEmojiList(e)}catch(t){this.loggingService.catch("Error in ReactionService setCustomReactions: ",t)}}enableDarkMode(){try{if(this.loggingService.log("%c[WB] Calling FUNCTION: enableDarkMode","color: green;"),this.darkMode$.value===!0)return;this.darkMode$.next(!0)}catch(e){this.loggingService.catch("Error in ReactionService enableDarkMode: ",e)}}disableDarkMode(){try{if(this.loggingService.log("%c[WB] Calling FUNCTION: disableDarkMode","color: green;"),this.darkMode$.value===!1)return;this.darkMode$.next(!1)}catch(e){this.loggingService.catch("Error in ReactionService disableDarkMode: ",e)}}getDarkMode(){return this.darkMode$.value}getDarkMode$(){return this.darkMode$.asObservable()}sanitizeReactionAnnotation(e){try{e&&(e.iconUrl&&(e.iconUrl=this.domService.sanitizeHtml(e.iconUrl)),e.iconEmoji&&(e.iconEmoji=this.domService.sanitizeHtml(e.iconEmoji)),e.icon&&(e.icon=this.domService.sanitizeHtml(e.icon)))}catch(t){this.loggingService.catch("Error in ReactionService sanitizeReactionAnnotation: ",t)}}get timestamp(){return this.commonDbService.getServerTimestamp()}getReactionAnnotationForClient(e){try{let t=["isReactionResolverUsed","pageInfo","from","involvedUserIds","position"],i=JSON.parse(JSON.stringify(e)),a={};return Object.keys(i).forEach(l=>{t.includes(l)||(l==="reactions"?a.fromUsers=i[l]:a[l]=i[l])}),a}catch(t){return this.loggingService.catch("Error in ReactionService getReactionAnnotationForClient: ",t),e}}};o.\u0275fac=function(t){return new(t||o)(X(eo),X(lt),X(We),X(Ft),X($n),X(Tn),X(ct),X(Be),X(vv),X(Ln),X(x),X(il))},o.\u0275prov=Me({token:o,factory:o.\u0275fac,providedIn:"root"});let n=o;return n})();var Tg={user:"componentConfigSignal.appState.user",isUserAdmin:"componentConfigSignal.appState.isUserAdmin",isKnownUser:"componentConfigSignal.appState.isKnownUser",repliesUniqueUsers:"componentConfigSignal.appState.repliesUniqueUsers",annotation:"componentConfigSignal.data.annotation",annotations:"componentConfigSignal.data.annotations",allAnnotations:"componentConfigSignal.data.allAnnotations",ghostComment:"componentConfigSignal.data.ghostComment",selectedFiles:"parentLocalUIState.selectedFiles",invalidSelectedFiles:"parentLocalUIState.invalidSelectedFiles",selectedAttachments:"parentLocalUIState.selectedAttachments",editComment:"parentLocalUIState.editComment",editCommentIndex:"parentLocalUIState.editCommentIndex",assignTo:"componentConfigSignal.data.assignTo",selectedUserContacts:"componentConfigSignal.data.selectedUserContacts",localRecordedData:"parentLocalUIState.localRecordedData",customList:"componentConfigSignal.data.customList",toOrganizationUserGroup:"componentConfigSignal.data.toOrganizationUserGroup",taggedUserContacts:"componentConfigSignal.data.taggedUserContacts",taggedGroups:"componentConfigSignal.data.taggedGroups",attachmentsToDelete:"parentLocalUIState.attachmentsToDelete",customChipData:"componentConfigSignal.data.customChipData",selectedCustomChipSet:"componentConfigSignal.data.selectedCustomChipSet",currentDialogView:"componentConfigSignal.data.currentDialogView",sidebarMode:"parentLocalUIState.sidebarMode",inboxMode:"parentLocalUIState.inboxMode",dialogMode:"parentLocalUIState.dialogMode",inlineCommentMode:"parentLocalUIState.inlineCommentMode",inlineCommentSectionMode:"parentLocalUIState.inlineCommentSectionMode",focusedThreadMode:"parentLocalUIState.focusedThreadMode",isFocusedThreadEnabled:"parentLocalUIState.isFocusedThreadEnabled",pageModeComposer:"parentLocalUIState.pageModeComposer",darkMode:"parentLocalUIState.darkMode",variant:"parentLocalUIState.variant",disabled:"parentLocalUIState.disabled",commentPinSelected:"parentLocalUIState.commentPinSelected",fullExpanded:"parentLocalUIState.fullExpanded",commentDialogSelected:"parentLocalUIState.commentDialogSelected",readOnly:"parentLocalUIState.readOnly",dialogShadowDOM:"parentLocalUIState.dialogShadowDOM",locationVersion:"parentLocalUIState.locationVersion",composerPosition:"parentLocalUIState.composerPosition",dialogOpenedInSidebar:"parentLocalUIState.dialogOpenedInSidebar",expandOnSelection:"parentLocalUIState.expandOnSelection",selectedVisibility:"parentLocalUIState.selectedVisibility",selectedVisibilityUsers:"parentLocalUIState.selectedVisibilityUsers",containerComponentId:"componentConfigSignal.uiState.containerComponentId",isPrivateComment:"componentConfigSignal.uiState.isPrivateComment",assignToMenuOpened:"parentLocalUIState.assignToMenuOpened",showGhostCommentMessage:"componentConfigSignal.uiState.showGhostCommentMessage",showReplies:"componentConfigSignal.uiState.showReplies",collapsedComments:"componentConfigSignal.uiState.collapsedComments",showAllComments:"componentConfigSignal.uiState.showAllComments",composerContent:"parentLocalUIState.composerContent",composerContentHTML:"parentLocalUIState.composerContentHTML",composerInOpenState:"parentLocalUIState.composerInOpenState",composerMode:"componentConfigSignal.uiState.composerMode",multiThreadAnnotationId:"componentConfigSignal.uiState.multiThreadAnnotationId",maxReplyAvatars:"componentConfigSignal.uiState.maxReplyAvatars",showSuggestionModeActions:"componentConfigSignal.uiState.showSuggestionModeActions",uploadingAttachments:"componentConfigSignal.uiState.uploadingAttachments",playVideoInFullScreen:"componentConfigSignal.uiState.playVideoInFullScreen",commentDialogUniqueId:"componentConfigSignal.uiState.commentDialogUniqueId",recorderInitConfig:"componentConfigSignal.uiState.recorderInitConfig",isInputFocused:"componentConfigSignal.uiState.isInputFocused",showCommentButtons:"componentConfigSignal.uiState.showCommentButtons",isAutocompleteDropdownOpen:"componentConfigSignal.uiState.isAutocompleteDropdownOpen",bottomSheetMode:"componentConfigSignal.uiState.bottomSheetMode",commentComposerMode:"componentConfigSignal.uiState.commentComposerMode",shouldScrollToBottom:"componentConfigSignal.uiState.shouldScrollToBottom",deviceType:"componentConfigSignal.uiState.deviceType",showReplyComposer:"componentConfigSignal.uiState.showReplyComposer",reactionToolOpenIndex:"componentConfigSignal.uiState.reactionToolOpenIndex",openDropdownIndexValue:"componentConfigSignal.uiState.openDropdownIndexValue",hasReactionsByCommentId:"componentConfigSignal.uiState.hasReactionsByCommentId",newComment:"parentLocalUIState.composerContent",newCommentHTML:"parentLocalUIState.composerContentHTML",canResolveAnnotation:"componentConfigSignal.featureState.canResolveAnnotation",canUnresolveAnnotation:"componentConfigSignal.featureState.canUnresolveAnnotation",dialogSelectedByKnownUser:"componentConfigSignal.featureState.dialogSelectedByKnownUser",resolveStatusAccessAdminOnly:"componentConfigSignal.featureState.resolveStatusAccessAdminOnly",enableResolve:"componentConfigSignal.featureState.enableResolve",isPlanExpired:"componentConfigSignal.featureState.isPlanExpired",moderatorMode:"componentConfigSignal.featureState.moderatorMode",enableAutoCategorize:"componentConfigSignal.featureState.enableAutoCategorize",suggestionMode:"componentConfigSignal.featureState.suggestionMode",commentAcceptedStatus:"componentConfigSignal.featureState.commentAcceptedStatus",commentRejectedStatus:"componentConfigSignal.featureState.commentRejectedStatus",enableSignInButton:"componentConfigSignal.featureState.enableSignInButton",enableUpgradeButton:"componentConfigSignal.featureState.enableUpgradeButton",enableGhostCommentsMessage:"componentConfigSignal.featureState.enableGhostCommentsMessage",replyAvatars:"componentConfigSignal.featureState.replyAvatars",userMentions:"componentConfigSignal.featureState.userMentions",recordingSummaryEnabled:"componentConfigSignal.featureState.recordingSummaryEnabled",enableAttachment:"componentConfigSignal.featureState.enableAttachment",allowedFileTypes:"componentConfigSignal.featureState.allowedFileTypes",allowedRecordings:"componentConfigSignal.featureState.allowedRecordings",screenSharingSupported:"componentConfigSignal.featureState.screenSharingSupported",enterKeyToSubmit:"componentConfigSignal.featureState.enterKeyToSubmit",deleteOnBackspace:"componentConfigSignal.featureState.deleteOnBackspace",showScreenSizeInfo:"componentConfigSignal.uiState.showScreenSizeInfo",enableReactions:"componentConfigSignal.featureState.enableReactions",isInsidePdfViewer:"componentConfigSignal.featureState.isInsidePdfViewer",sidebarButtonOnCommentDialogVisible:"componentConfigSignal.uiState.sidebarButtonOnCommentDialogVisible",enableStatus:"componentConfigSignal.featureState.enableStatus",customStatusesShown:"componentConfigSignal.featureState.customStatusesShown",statusOptions:"componentConfigSignal.featureState.statusOptions",enablePriority:"componentConfigSignal.featureState.enablePriority",visibilityOptions:"componentConfigSignal.featureState.visibilityOptions",priorityOptions:"componentConfigSignal.featureState.priorityOptions",enableAssignment:"componentConfigSignal.featureState.enableAssignment",enableNotifications:"componentConfigSignal.featureState.enableNotifications",enableEdit:"componentConfigSignal.featureState.enableEdit",enableDelete:"componentConfigSignal.featureState.enableDelete",enablePrivateMode:"componentConfigSignal.featureState.enablePrivateMode",deleteThreadWithFirstComment:"componentConfigSignal.featureState.deleteThreadWithFirstComment",seenByUsers:"componentConfigSignal.featureState.seenByUsers",allowAssignment:"componentConfigSignal.featureState.enableAssignment",allowToggleNotification:"componentConfigSignal.featureState.enableNotifications",allowEdit:"componentConfigSignal.featureState.enableEdit",allowChangeCommentAccessMode:"componentConfigSignal.featureState.enablePrivateMode",notificationEnabled:"notificationEnabled",mainCommentId:"componentConfigSignal.data.annotation.comments.0.commentId",commentObj:"commentObj",commentIndex:"commentIndex",userContact:"selectorItem.contact",comment:"commentObj",commentAnnotation:"componentConfigSignal.data.annotation",commentAnnotations:"componentConfigSignal.data.annotations",context:"parentLocalUIState.context",focusedAnnotation:"focusedAnnotation",notification:"notification",notificationsPanel:"notificationsPanel",selectedMinimalFilterDropdownOption:"selectedMinimalFilterDropdownOption",appliedFiltersCount:"appliedFiltersCount",filteredCommentAnnotationsCount:"filteredCommentAnnotationsCount",unreadCommentAnnotationCount:"unreadCommentAnnotationCount"},FWe=["user","annotation","annotations","allAnnotations","userContact","comment","commentAnnotation","commentAnnotations","recorderInitConfig","ghostComment","editComment","assignTo","customChipData","currentDialogView","context","focusedAnnotation","notification","notificationsPanel","selectedMinimalFilterDropdownOption"],I=(()=>{let _DynamicDataService=class _DynamicDataService{constructor(n,o,r,e,t,i){this.authService=n,this.commentService=o,this.loggingService=r,this.injector=e,this.docService=t,this.configService=i,this.subscriptions=[],this.commonData$=new Se({}),this.evaluateConditionTriggered=new Le,this.conditionRegex=/\{(.*?)\}/g,this.extractedProps={},this.condition="",this.dataComponentConfigSignal=Ae({});try{this.subscriptions.push(this.authService.getUser$().subscribe(a=>{this.commonData$.next(k(f({},this.commonData$.value),{user:a}))})),this.subscriptions.push(this.commentService.getUnreadCommentAnnotationCountOnCurrentDocument$().subscribe(a=>{this.commonData$.next(k(f({},this.commonData$.value),{unreadCommentAnnotationCount:a?.count||0}))})),this.subscriptions.push(this.commentService.getUnreadCommentCountOnCurrentDocument$().subscribe(a=>{this.commonData$.next(k(f({},this.commonData$.value),{unreadCommentCount:a?.count||0}))})),this.subscriptions.push(this.docService.getUIState$().subscribe(a=>{this.commonData$.next(f(f({},this.commonData$.value),a))})),this.subscriptions.push(this.getCommonData().subscribe(a=>{this.dataComponentConfigSignal.update(l=>(l=f(f({},l),a),l)),this.executeConditionalClasses()})),this.subscriptions.push(this.evaluateConditionTriggered.subscribe(a=>{this.extractedProps=a.extractedProps,this.evaluateCondition(a.className,a.elementRef,a.condition)}))}catch(a){this.loggingService.catch("Error in DynamicDataService constructor: ",a)}}ngOnDestroy(){try{this.subscriptions.forEach(n=>n.unsubscribe())}catch(n){this.loggingService.catch("Error in DynamicDataService ngOnDestroy: ",n)}}getCommonData(){return this.commonData$.asObservable()}getModifiedPathBasedOnCondition(n,o){try{return Object.keys(o).forEach(r=>{o[r].path=this.modifyPathBasedOnCondition(r,n)}),o}catch(r){this.loggingService.catch("Error in DynamicDataService getModifiedPathBasedOnCondition: ",r)}}getComputedValues(n,o,r,e,t,i){try{Object.keys(r).forEach(a=>{let l;if(lo(n)?l=ce(()=>Cl(n(),r[a].path)):l=ce(()=>Cl(n,r[a].path)),lo(l()))On(()=>{try{let s=l()();r[a].value=s,this.evaluateConditionTriggered.emit({extractedProps:r,className:e,elementRef:t,condition:i})}catch{}},{injector:this.injector,allowSignalWrites:!0});else{let s=l();r[a].value=s,this.evaluateConditionTriggered.emit({extractedProps:r,className:e,elementRef:t,condition:i})}})}catch(a){this.loggingService.catch("Error in DynamicDataService getComputedValues: ",a)}}modifyPathBasedOnCondition(n,o){try{let r=n.match(/^([^\.\[]+)/),e=r?r[1]:n,t=n.slice(e.length);if(Tg[n])return Tg[n];if(["commentDialogOptionsDropdownConfigSignal","commentDialogStatusDropdownConfigSignal"].includes(e)&&t.startsWith(".")){let a=t.slice(1),l=a.match(/^([^\.\[]+)/),s=l?l[1]:a,d=a.slice(s.length);return Tg[s]?Tg[s]+d:"componentConfigSignal."+a}if(e&&o&&typeof o=="function"){let a=o();if(a&&e in a){let s=n.match(/\[(.*?)\]/);if(s&&s[1]){let d=s[1];if(d.includes(".")){let g=d.split(".")[0];if(Tg[g]){let u=d.replace(g,Tg[g]);return n.replace(`[${d}]`,`[${u}]`)}return g&&a&&g in a?n:n.replace(`[${d}]`,`[componentConfigSignal.${d}]`)}}return n}let l=a?.componentConfigSignal;if(l&&typeof l=="function"){let s=l();if(s&&e in s)return"componentConfigSignal."+n}}return Tg[e]?FWe.includes(e)?Tg[e]+t:Tg[e]:"componentConfigSignal."+n}catch(r){return this.loggingService.catch("Error in DynamicDataService modifyPathBasedOnCondition: ",r),n}}applyConditionalClasses(n,o){try{this.elementRef=n,this.data=o}catch(r){this.loggingService.catch("Error in DynamicDataService applyConditionalClasses: ",r)}}executeConditionalClasses(){try{let n=this.getHostElementAttributes(this.elementRef),r=[...Object.keys(n).filter(e=>e.startsWith("velt-class-")).map(e=>({name:e,value:n[e]}))];if(n["velt-class"]){let e=n["velt-class"],t=/'([^']+)':\s*([^,]+)(?:,|$)/g,i=[],a=0,l=100,s;for(;(s=t.exec(e))!==null;){if(a++>l){this.loggingService.catch("Too many class definitions detected.");break}if(s.length<3)continue;let[,d,g]=s;!d||!g||d.split(" ").forEach(u=>{u.trim()&&i.push({name:`velt-class-${u.trim()}`,value:g.trim()})})}r=[...r,...i]}this.data&&typeof this.data=="object"&&Object.keys(this.data).forEach(e=>{this.updateDataComponentConfigSignal(e,this.data[e])}),r.forEach(e=>{let t=e.name.replace("velt-class-","");this.condition=e.value,this.condition&&(this.extractProps(),this.extractedProps=this.getModifiedPathBasedOnCondition(this.dataComponentConfigSignal,this.extractedProps),this.getComputedValues(this.dataComponentConfigSignal,this.evaluateCondition,this.extractedProps,t,this.elementRef,e.value))})}catch(n){this.loggingService.catch("Error in DynamicDataService applyConditionalClasses: ",n)}}updateDataComponentConfigSignal(n,o){try{n==="dataComponentConfigSignal"?this.dataComponentConfigSignal.set(o):this.dataComponentConfigSignal.update(r=>k(f({},r),{[n]:o}))}catch(r){this.loggingService.catch("Error in DataComponent updateDataComponentConfigSignal: ",r)}}extractProps(){try{this.extractedProps={},this.conditionRegex.lastIndex=0;let n;for(;(n=this.conditionRegex.exec(this.condition))!==null;){let o=n[1];this.extractedProps[o]={value:null,path:null,isDynamicPath:this.hasDynamicParts(o)}}}catch(n){this.loggingService.catch("Error in DynamicDataService extractProps: ",n)}}hasDynamicParts(n){try{let o=/\[[^\]'"]*[^\]'"]\]/.test(n),r=/\[[^[\]]*[\.\[][^[\]]*\]/.test(n);return o||r}catch(o){return this.loggingService.catch("Error checking for dynamic path: ",o),!1}}evaluateCondition(n,o,r){try{if(r){let e=this.extractedProps,t=r.replace(this.conditionRegex,(l,s)=>{let d=e[s];if(d&&d.value!==void 0){let g=d.value;return typeof g=="string"?`'${g}'`:typeof g=="boolean"||typeof g=="number"?String(g):g===null?"null":typeof g=="object"?g?"true":"false":String(g)}return"false"}),i=this.sanitizeCondition(t),a=this.safeEval(i);return n&&o&&(a?this.setHostElementClasses(o,n):this.removeHostElementClasses(o,n)),a}return!1}catch(e){return this.loggingService.catch("Error in IfComponent evaluateCondition: ",e),!1}}sanitizeCondition(n){try{return n.replace(/[^a-zA-Z0-9\s\+\-\*\/\%\(\)\!\=\<\>\|\&\.\[\]\{\},'"]/g,"")}catch(o){return this.loggingService.catch("Error in IfComponent sanitizeCondition: ",o),""}}safeEval(expression){try{if(this.configService.getSafeEval()){let n=this.tokenize(expression.trim());return this.evaluateTokens(n)}else return eval(expression)}catch(n){return this.loggingService.catch("safeEval error",n),!1}}tokenize(n){try{if(!n||n.trim()==="")return[];let o=[],r=0;for(;r<n.length;){let e=n[r];if(/\s/.test(e)){r++;continue}if(e==='"'||e==="'"){let t=e,i="";for(r++;r<n.length;)if(n[r]==="\\"&&r+1<n.length)i+=n[r+1],r+=2;else if(n[r]===t){r++;break}else i+=n[r],r++;o.push({type:"string",value:i});continue}if(e==="("){o.push({type:"lparen",value:"("}),r++;continue}if(e===")"){o.push({type:"rparen",value:")"}),r++;continue}if(r<n.length-2&&n.substring(r,r+3)==="==="){o.push({type:"operator",value:"===",precedence:4}),r+=3;continue}if(r<n.length-2&&n.substring(r,r+3)==="!=="){o.push({type:"operator",value:"!==",precedence:4}),r+=3;continue}if(r<n.length-1&&n.substring(r,r+2)==="&&"){o.push({type:"operator",value:"&&",precedence:2}),r+=2;continue}if(r<n.length-1&&n.substring(r,r+2)==="||"){o.push({type:"operator",value:"||",precedence:1}),r+=2;continue}if(r<n.length-1&&n.substring(r,r+2)==="<="){o.push({type:"operator",value:"<=",precedence:4}),r+=2;continue}if(r<n.length-1&&n.substring(r,r+2)===">="){o.push({type:"operator",value:">=",precedence:4}),r+=2;continue}if(r<n.length-1&&n.substring(r,r+2)==="=="){o.push({type:"operator",value:"==",precedence:4}),r+=2;continue}if(r<n.length-1&&n.substring(r,r+2)==="!="){o.push({type:"operator",value:"!=",precedence:4}),r+=2;continue}if(e==="!"){o.push({type:"unary",value:"!",precedence:5}),r++;continue}if(e==="<"){o.push({type:"operator",value:"<",precedence:4}),r++;continue}if(e===">"){o.push({type:"operator",value:">",precedence:4}),r++;continue}if(/[a-zA-Z0-9._]/.test(e)){let t="";for(;r<n.length&&/[a-zA-Z0-9._]/.test(n[r]);)t+=n[r],r++;/^-?\d+(\.\d+)?$/.test(t)?o.push({type:"number",value:parseFloat(t)}):t==="true"||t==="false"?o.push({type:"boolean",value:t==="true"}):t==="null"?o.push({type:"null",value:null}):t==="undefined"?o.push({type:"undefined",value:void 0}):o.push({type:"identifier",value:t});continue}r++}return o}catch(o){return this.loggingService.catch("tokenize error",o),[]}}evaluateTokens(n){try{if(!n||n.length===0)return!1;let o=this.infixToPostfix(n);return this.evaluatePostfix(o)}catch(o){return this.loggingService.catch("evaluateTokens error",o),!1}}infixToPostfix(n){try{let o=[],r=[];for(let e of n)if(e.type==="string"||e.type==="number"||e.type==="boolean"||e.type==="null"||e.type==="undefined"||e.type==="identifier")o.push(e);else if(e.type==="unary")r.push(e);else if(e.type==="operator"){for(;r.length>0;){let t=r[r.length-1];if(t.type==="lparen"||t.precedence!==void 0&&t.precedence<e.precedence)break;o.push(r.pop())}r.push(e)}else if(e.type==="lparen")r.push(e);else if(e.type==="rparen"){for(;r.length>0&&r[r.length-1].type!=="lparen";)o.push(r.pop());r.length>0&&r.pop()}for(;r.length>0;){let e=r.pop();e.type!=="lparen"&&e.type!=="rparen"&&o.push(e)}return o}catch(o){return this.loggingService.catch("infixToPostfix error",o),[]}}evaluatePostfix(n){try{let o=[];for(let r of n)if(r.type==="string"||r.type==="number"||r.type==="boolean"||r.type==="null"||r.type==="undefined"||r.type==="identifier")o.push(r.value);else if(r.type==="unary"){if(o.length>=1){let e=o.pop();r.value==="!"&&o.push(!this.isTruthy(e))}}else if(r.type==="operator"&&o.length>=2){let e=o.pop(),t=o.pop();r.value==="&&"?o.push(this.isTruthy(t)&&this.isTruthy(e)):r.value==="||"?o.push(this.isTruthy(t)||this.isTruthy(e)):o.push(this.compare(t,e,r.value))}return o.length===1?this.isTruthy(o[0]):!1}catch(o){return this.loggingService.catch("evaluatePostfix error",o),!1}}parseValue(n){try{let o=n.trim();return o.startsWith('"')&&o.endsWith('"')||o.startsWith("'")&&o.endsWith("'")?o.substring(1,o.length-1):/^-?\d+(\.\d+)?$/.test(o)?parseFloat(o):o==="true"?!0:o==="false"?!1:o==="null"?null:o==="undefined"?void 0:o}catch(o){return this.loggingService.catch("parseValue error",o),n}}compare(n,o,r){try{switch(r){case"===":return n===o;case"!==":return n!==o;case"==":return n==o;case"!=":return n!=o;case"<":return n<o;case">":return n>o;case"<=":return n<=o;case">=":return n>=o;default:return!1}}catch(e){return this.loggingService.catch("compare error",e),!1}}isTruthy(n){try{return n==null||n===""||n==="false"?!1:n==="true"?!0:typeof n=="number"?n!==0:!!n}catch(o){return this.loggingService.catch("isTruthy error",o),!1}}getHostElementAttributes(n){try{let o=n,r={};for(let e of o.attributes)r[e.name]=e.value;return r}catch{return{}}}setHostElementClasses(n,o){try{n.classList.add(o)}catch{}}removeHostElementClasses(n,o){try{n.classList.remove(o)}catch{}}};_DynamicDataService.\u0275fac=function(o){return new(o||_DynamicDataService)(X(We),X(Pe),X(x),X(Ot),X(ct),X(Ft))},_DynamicDataService.\u0275prov=Me({token:_DynamicDataService,factory:_DynamicDataService.\u0275fac,providedIn:"root"});let DynamicDataService=_DynamicDataService;return DynamicDataService})();var oe=(()=>{let o=class o{set veltIf(e){try{e&&this.setIfCondition(e)}catch(t){this._loggingService.catch("Error in BaseComponent set veltIf:",t)}}constructor(e,t,i){this._elementRef=e,this._dynamicDataService=t,this._loggingService=i,this.componentConfigSignal=Ae({}),this.veltElement=!0,this.conditionSignal=Ae(null)}initializeComponentConfigSignal(e){try{this.componentConfigSignal.set(e)}catch(t){this._loggingService.catch("Error in BaseComponent initializeComponentConfigSignal:",t)}}ngOnInit(){try{this._dynamicDataService.applyConditionalClasses(this._elementRef?.nativeElement,{componentConfigSignal:this.componentConfigSignal})}catch(e){this._loggingService.catch("Error in BaseComponent ngOnInit:",e)}}ngOnDestroy(){}setIfCondition(e){try{this.conditionSignal.set(e)}catch(t){this._loggingService.catch("Error in BaseComponent setIfCondition:",t)}}};o.\u0275fac=function(t){return new(t||o)(y(Z),y(I),y(x))},o.\u0275cmp=O({type:o,selectors:[["app-base"]],hostVars:1,hostBindings:function(t,i){t&2&&T("data-velt-element",i.veltElement)},inputs:{componentConfigSignal:"componentConfigSignal",template:"template",wireframe:"wireframe",veltIf:"veltIf"},standalone:!1,decls:0,vars:0,template:function(t,i){},encapsulation:2});let n=o;return n})();var _t=(()=>{let o=class o{constructor(e,t){this.loggingService=e,this.configService=t,this.darkMode$=new Se(!1)}setDarkMode(e){try{let t=document.documentElement;if(!t)return;e?t.setAttribute(U.ATTRIBUTES.VELT_THEME,"dark"):t.removeAttribute(U.ATTRIBUTES.VELT_THEME),this.darkMode$.next(e)}catch(t){this.loggingService.catch("Error in theme service setDarkMode: ",t)}}getDarkMode$(){return this.darkMode$.asObservable()}updateListenerOnConfigChange(){try{this.configService.getConfig$().subscribe(e=>{if(e&&e.usePrefersColorScheme){this.enablePrefersColorScheme();return}this.disablePrefersColorScheme()})}catch(e){this.loggingService.catch("Error in theme service updateListenerOnConfigChange: ",e)}}enablePrefersColorScheme(){try{if(this.disablePrefersColorScheme(),!window.matchMedia)return;this.darkModeQuery=window.matchMedia("(prefers-color-scheme: dark)"),this.setDarkMode(this.darkModeQuery.matches),this.darkModeQueryListener=e=>{this.setDarkMode(e.matches)},this.darkModeQuery.addEventListener("change",this.darkModeQueryListener)}catch(e){this.loggingService.catch("Error in theme service enablePrefersColorScheme: ",e)}}disablePrefersColorScheme(){try{this.darkModeQuery&&this.darkModeQueryListener&&this.darkModeQuery.removeEventListener("change",this.darkModeQueryListener)}catch(e){this.loggingService.catch("Error in theme service disablePrefersColorScheme: ",e)}}};o.\u0275fac=function(t){return new(t||o)(X(x),X(Ft))},o.\u0275prov=Me({token:o,factory:o.\u0275fac,providedIn:"root"});let n=o;return n})();var wt=(()=>{let o=class o extends oe{onDarkModeChange(){return this.darkModeSubject$.asObservable()}constructor(e,t,i,a,l,s,d){super(e,s,d),this._elementRef=e,this._themeService=t,this._changeDetector=i,this._featureService=a,this._componentDarkModeObservable=l,this._componentDarkMode=null,this._globalDarkMode=!1,this._featureDarkMode=!1,this._themeSubscriptions=[],this._darkMode=!1,this.darkMode=!1,this.darkModeSubject$=new Se(!1);try{this._themeSubscriptions.push(this._themeService.getDarkMode$().subscribe(g=>{this._globalDarkMode=g,this.setDarkMode()})),this._featureService&&(this._featureService instanceof Pe?this._themeSubscriptions.push(this._featureService.getCommentContainerDarkMode().subscribe(g=>{this._featureDarkMode=g,this.setDarkMode()})):this._featureService instanceof Hi&&this._themeSubscriptions.push(this._featureService.getDarkMode$().subscribe(g=>{g!==null&&(this._featureDarkMode=g),this.setDarkMode()}))),this._componentDarkModeObservable&&this._componentDarkModeObservable instanceof Gt&&this._themeSubscriptions.push(this._componentDarkModeObservable.subscribe(g=>{this._componentDarkMode=g,this.setDarkMode()}))}catch{}}ngOnInit(){super.ngOnInit()}ngOnChanges(e){try{if(e._darkMode){let t=e._darkMode.currentValue;typeof t=="string"&&(t=t==="true"),this._componentDarkMode=t,this.setDarkMode()}}catch{}}setComponentDarkMode(e){try{this._componentDarkMode=e,this.setDarkMode()}catch{}}setDarkMode(){try{this._componentDarkMode===null?this._featureDarkMode?this.darkMode=!0:this.darkMode=!!this._globalDarkMode:this.darkMode=!!this._componentDarkMode,this.darkMode?this._elementRef.nativeElement.hasAttribute("dark")||this._elementRef.nativeElement.setAttribute("dark",""):this._elementRef.nativeElement.hasAttribute("dark")&&this._elementRef.nativeElement.removeAttribute("dark"),this.darkModeSubject$.next(this.darkMode),this._changeDetector&&this._changeDetector.markForCheck()}catch{}}ngOnDestroy(){try{super.ngOnDestroy(),this._themeSubscriptions.forEach(e=>{e.unsubscribe()})}catch{}}};o.\u0275fac=function(t){return new(t||o)(y(Z),y(_t),y(Qt),y("FeatureService",8),y(Gt),y(I),y(x))},o.\u0275cmp=O({type:o,selectors:[["app-themed"]],inputs:{_darkMode:[0,"darkMode","_darkMode"]},standalone:!1,features:[P,st],decls:0,vars:0,template:function(t,i){},encapsulation:2,changeDetection:0});let n=o;return n})();var Ze=(()=>{let o=class o{constructor(e){this.loggingService=e,this.wireframeMap=new Se(new Map);try{this.loggingService.log("%c[WB] Creating CLASS: WireframeService","color: blue;")}catch(t){this.loggingService.catch("Error in WireframeService constructor: ",t)}}setWireframe(e,t){try{let i=this.wireframeMap.value,a=i.get(e),l=t.children.length>0||t.innerHTML?.trim()?.length>0,s=a&&(a.children.length>0||a.innerHTML?.trim()?.length>0);(!a||l&&!s)&&(i.set(e,t),this.wireframeMap.next(i))}catch(i){this.loggingService.catch("Error in WireframeService setWireframe: ",i)}}setWireframeMap(e){try{let t=this.wireframeMap.value;e.forEach((i,a)=>{let l=t.get(a),s=i.children.length>0||i.innerHTML?.trim()?.length>0,d=l&&(l.children.length>0||l.innerHTML?.trim()?.length>0);(!l||s&&!d)&&t.set(a,i)}),this.wireframeMap.next(t)}catch(t){this.loggingService.catch("Error in WireframeService setWireframeMap: ",t)}}getWireframe(e,t=!0){try{let i=this.wireframeMap.value,a=i.get(e);if(!a&&t){let l=e?.split("---")[0];l&&(a=i.get(l))}return a&&(a?.children?.length>0||a?.innerHTML?.trim()?.length>0)?a:void 0}catch(i){this.loggingService.catch("Error in WireframeService getWireframe: ",i);return}}getConditionElement(e,t=!0){try{let i=this.wireframeMap.value,a=i.get(e);if(!a&&t){let l=e?.split("---")[0];l&&(a=i.get(l))}return a}catch(i){this.loggingService.catch("Error in WireframeService getConditionElement: ",i);return}}getWireframe$(e,t=!0){return this.wireframeMap.asObservable().pipe(ue(i=>this.getWireframe(e,t)))}setChildren(e){try{this.wireframeMap.next(e)}catch(t){this.loggingService.catch("Error in WireframeService setChildren: ",t)}}getWireframeMap(){return this.wireframeMap.value}};o.\u0275fac=function(t){return new(t||o)(X(x))},o.\u0275prov=Me({token:o,factory:o.\u0275fac,providedIn:"root"});let n=o;return n})();var L_e=n=>({componentConfigSignal:n}),LWe=(n,o)=>({condition:n,data:o}),UWe=(n,o,r,e,t)=>({template:n,context:o,componentName:"velt-confirm-dialog-wireframe",variant:r,setIfCondition:e,componentElementRef:t});function VWe(n,o){if(n&1&&(C(0),D(1,"app-confirm-dialog-title",5)(2,"app-confirm-dialog-message",5),h(3,"div",6),D(4,"app-confirm-dialog-reject",5)(5,"app-confirm-dialog-approve",5),S(),_()),n&2){let r=c(3);m(),v("componentConfigSignal",r.componentConfigSignal),m(),v("componentConfigSignal",r.componentConfigSignal),m(2),v("componentConfigSignal",r.componentConfigSignal),m(),v("componentConfigSignal",r.componentConfigSignal)}}function BWe(n,o){if(n&1&&(C(0),p(1,VWe,6,4,"ng-container",4),_()),n&2){let r=c().ngIf,e=c();m(),v("veltDynamicTemplate",j(3,UWe,e.template,G(1,L_e,e.componentConfigSignal),r==null?null:r.variant,e.setIfCondition.bind(e),e.elementRef))}}function jWe(n,o){if(n&1&&(C(0),p(1,BWe,2,9,"ng-container",3),_()),n&2){let r=c();m(),v("veltIf",w(3,LWe,r.conditionSignal(),G(1,L_e,r.componentConfigSignal)))}}var xl=(()=>{let o=class o extends wt{constructor(e,t,i,a,l,s,d){super(l,a,void 0,void 0,void 0,d,e),this.loggingService=e,this.dialogRef=t,this.wireframeService=i,this.themeService=a,this.elementRef=l,this.dynamicDataService=d,this.subscriptions=[],this.componentConfigSignal=Ae({title:"",message:"",yesButton:"",noButton:"",variant:"",closeDialog:this.closeDialog.bind(this)}),this.componentId="velt-confirm-dialog",this.veltElement=!0;try{s&&(this.componentConfigSignal.update(g=>(g=f(f({},g),s),g)),s?.darkMode&&[!0,!1].includes(s?.darkMode)&&super.setComponentDarkMode(s?.darkMode)),this.setZIndex()}catch(g){this.loggingService.catch("Error in ConfirmDialogComponent constructor: ",g)}}ngOnInit(){try{this.loggingService.log("%c[WB] Calling FUNCTION: ngOnInit","color: green;");let e="velt-confirm-dialog-wireframe";super.ngOnInit(),this.componentConfigSignal()?.variant&&(e+=`---${this.componentConfigSignal()?.variant}`),this.subscriptions.push(this.wireframeService.getWireframe$(e).subscribe(t=>{if(t){let i=document.createElement(t.tagName);i.innerHTML=t.innerHTML,this.template=i}}))}catch(e){this.loggingService.catch("Error in ConfirmDialogComponent OnInit: ",e)}}ngOnDestroy(){super.ngOnDestroy();try{this.subscriptions.forEach(e=>e.unsubscribe())}catch(e){this.loggingService.catch("Error in ConfirmDialogComponent OnDestroy: ",e)}}setZIndex(){try{if(this.dialogRef){let e=this.dialogRef._overlayRef;e&&(e.backdropElement&&(e.backdropElement.style.zIndex="2147483647"),e.hostElement&&(e.hostElement.style.zIndex="2147483647"))}}catch(e){this.loggingService.catch("Error in ConfirmDialogComponent setZIndex: ",e)}}closeDialog(e){try{this.dialogRef.close(e)}catch(t){this.loggingService.catch("Error in ConfirmDialogComponent closeDialog: ",t)}}};o.\u0275fac=function(t){return new(t||o)(y(x),y(Vi),y(Ze),y(_t),y(Z),y(Yc,8),y(I))},o.\u0275cmp=O({type:o,selectors:[["snippyly-confirm-dialog"]],hostVars:1,hostBindings:function(t,i){t&2&&T("data-velt-element",i.veltElement)},standalone:!1,features:[B([I]),P],decls:3,vars:5,consts:[["floatingConfirmationRef",""],[1,"velt-confirm-dialog",3,"snippylyOverlay","snippylyOverlayZIndex","snippylyOverlayBackdropZIndex"],[4,"ngIf"],[4,"veltIf"],[4,"veltDynamicTemplate"],[3,"componentConfigSignal"],["mat-dialog-actions","",1,"velt-confirm-dialog-actions"]],template:function(t,i){if(t&1&&(h(0,"div",1,0),p(2,jWe,2,6,"ng-container",2),S()),t&2){let a=Ie(1);v("snippylyOverlay",a)("snippylyOverlayZIndex",1200)("snippylyOverlayBackdropZIndex",1100),T("data-testid",i.componentId),m(2),v("ngIf",i.componentConfigSignal())}},styles:["html[_ngcontent-%COMP%]{--velt-base-rem-unit: 1}*[data-snippyly-element=true][_ngcontent-%COMP%], *[data-velt-element=true][_ngcontent-%COMP%]{font-family:var(--velt-default-font-family)}velt-wireframe[_ngcontent-%COMP%]{display:none!important}[_nghost-%COMP%] *[_ngcontent-%COMP%]{outline:0}[_nghost-%COMP%]{--velt-green: var(--velt-light-mode-green);--velt-magenta: var(--velt-light-mode-magenta);--velt-amber: var(--velt-light-mode-amber);--velt-purple: var(--velt-light-mode-purple);--velt-cyan: var(--velt-light-mode-cyan);--velt-orange: var(--velt-light-mode-orange);--velt-black: var(--velt-light-mode-black);--velt-white: var(--velt-light-mode-white);--velt-gray: var(--velt-light-mode-gray);--velt-error: var(--velt-light-mode-error);--velt-error-hover: var(--velt-light-mode-error-hover);--velt-error-foreground: var(--velt-light-mode-error-foreground);--velt-error-light: var(--velt-light-mode-error-light);--velt-error-transparent: var(--velt-light-mode-error-transparent);--velt-warning: var(--velt-light-mode-warning);--velt-warning-hover: var(--velt-light-mode-warning-hover);--velt-warning-foreground: var(--velt-light-mode-warning-foreground);--velt-warning-light: var(--velt-light-mode-warning-light);--velt-warning-transparent: var(--velt-light-mode-warning-transparent);--velt-success: var(--velt-light-mode-success);--velt-success-hover: var(--velt-light-mode-success-hover);--velt-success-foreground: var(--velt-light-mode-success-foreground);--velt-success-light: var(--velt-light-mode-success-light);--velt-success-transparent: var(--velt-light-mode-success-transparent);--velt-accent: var(--velt-light-mode-accent);--velt-accent-text: var(--velt-light-mode-accent-text);--velt-accent-hover: var(--velt-light-mode-accent-hover);--velt-accent-foreground: var(--velt-light-mode-accent-foreground);--velt-accent-light: var(--velt-light-mode-accent-light);--velt-accent-transparent: var(--velt-light-mode-accent-transparent);--velt-text-0: var(--velt-light-mode-text-0);--velt-text-1: var(--velt-light-mode-text-1);--velt-text-2: var(--velt-light-mode-text-2);--velt-text-3: var(--velt-light-mode-text-3);--velt-text-4: var(--velt-light-mode-text-4);--velt-text-5: var(--velt-light-mode-text-5);--velt-text-6: var(--velt-light-mode-text-6);--velt-text-7: var(--velt-light-mode-text-7);--velt-text-8: var(--velt-light-mode-text-8);--velt-text-9: var(--velt-light-mode-text-9);--velt-text-10: var(--velt-light-mode-text-10);--velt-text-11: var(--velt-light-mode-text-11);--velt-text-12: var(--velt-light-mode-text-12);--velt-background-0: var(--velt-light-mode-background-0);--velt-background-1: var(--velt-light-mode-background-1);--velt-background-2: var(--velt-light-mode-background-2);--velt-background-3: var(--velt-light-mode-background-3);--velt-background-4: var(--velt-light-mode-background-4);--velt-background-5: var(--velt-light-mode-background-5);--velt-background-6: var(--velt-light-mode-background-6);--velt-background-7: var(--velt-light-mode-background-7);--velt-background-8: var(--velt-light-mode-background-8);--velt-background-9: var(--velt-light-mode-background-9);--velt-background-10: var(--velt-light-mode-background-10);--velt-border-0: var(--velt-light-mode-border-0);--velt-border-1: var(--velt-light-mode-border-1);--velt-border-2: var(--velt-light-mode-border-2);--velt-border-3: var(--velt-light-mode-border-3);--velt-border-4: var(--velt-light-mode-border-4);--velt-border-5: var(--velt-light-mode-border-5);--velt-border-6: var(--velt-light-mode-border-6);--velt-border-7: var(--velt-light-mode-border-7);--velt-border-8: var(--velt-light-mode-border-8);--velt-border-9: var(--velt-light-mode-border-9);--velt-border-10: var(--velt-light-mode-border-10);--velt-background-transparent: var(--velt-light-mode-background-transparent);--velt-border-transparent: var(--velt-light-mode-border-transparent);--velt-animation-transparent: var(--velt-light-mode-animation-transparent)}[dark][_nghost-%COMP%]{--velt-green: var(--velt-dark-mode-green);--velt-magenta: var(--velt-dark-mode-magenta);--velt-amber: var(--velt-dark-mode-amber);--velt-purple: var(--velt-dark-mode-purple);--velt-cyan: var(--velt-dark-mode-cyan);--velt-orange: var(--velt-dark-mode-orange);--velt-black: var(--velt-dark-mode-black);--velt-white: var(--velt-dark-mode-white);--velt-gray: var(--velt-dark-mode-gray);--velt-error: var(--velt-dark-mode-error);--velt-error-hover: var(--velt-dark-mode-error-hover);--velt-error-foreground: var(--velt-dark-mode-error-foreground);--velt-error-light: var(--velt-dark-mode-error-light);--velt-error-transparent: var(--velt-dark-mode-error-transparent);--velt-warning: var(--velt-dark-mode-warning);--velt-warning-hover: var(--velt-dark-mode-warning-hover);--velt-warning-foreground: var(--velt-dark-mode-warning-foreground);--velt-warning-light: var(--velt-dark-mode-warning-light);--velt-warning-transparent: var(--velt-dark-mode-warning-transparent);--velt-success: var(--velt-dark-mode-success);--velt-success-hover: var(--velt-dark-mode-success-hover);--velt-success-foreground: var(--velt-dark-mode-success-foreground);--velt-success-light: var(--velt-dark-mode-success-light);--velt-success-transparent: var(--velt-dark-mode-success-transparent);--velt-accent: var(--velt-dark-mode-accent);--velt-accent-text: var(--velt-dark-mode-accent-text);--velt-accent-hover: var(--velt-dark-mode-accent-hover);--velt-accent-foreground: var(--velt-dark-mode-accent-foreground);--velt-accent-light: var(--velt-dark-mode-accent-light);--velt-accent-transparent: var(--velt-dark-mode-accent-transparent);--velt-text-0: var(--velt-dark-mode-text-0);--velt-text-1: var(--velt-dark-mode-text-1);--velt-text-2: var(--velt-dark-mode-text-2);--velt-text-3: var(--velt-dark-mode-text-3);--velt-text-4: var(--velt-dark-mode-text-4);--velt-text-5: var(--velt-dark-mode-text-5);--velt-text-6: var(--velt-dark-mode-text-6);--velt-text-7: var(--velt-dark-mode-text-7);--velt-text-8: var(--velt-dark-mode-text-8);--velt-text-9: var(--velt-dark-mode-text-9);--velt-text-10: var(--velt-dark-mode-text-10);--velt-text-11: var(--velt-dark-mode-text-11);--velt-text-12: var(--velt-dark-mode-text-12);--velt-background-0: var(--velt-dark-mode-background-0);--velt-background-1: var(--velt-dark-mode-background-1);--velt-background-2: var(--velt-dark-mode-background-2);--velt-background-3: var(--velt-dark-mode-background-3);--velt-background-4: var(--velt-dark-mode-background-4);--velt-background-5: var(--velt-dark-mode-background-5);--velt-background-6: var(--velt-dark-mode-background-6);--velt-background-7: var(--velt-dark-mode-background-7);--velt-background-8: var(--velt-dark-mode-background-8);--velt-background-9: var(--velt-dark-mode-background-9);--velt-background-10: var(--velt-dark-mode-background-10);--velt-border-0: var(--velt-dark-mode-border-0);--velt-border-1: var(--velt-dark-mode-border-1);--velt-border-2: var(--velt-dark-mode-border-2);--velt-border-3: var(--velt-dark-mode-border-3);--velt-border-4: var(--velt-dark-mode-border-4);--velt-border-5: var(--velt-dark-mode-border-5);--velt-border-6: var(--velt-dark-mode-border-6);--velt-border-7: var(--velt-dark-mode-border-7);--velt-border-8: var(--velt-dark-mode-border-8);--velt-border-9: var(--velt-dark-mode-border-9);--velt-border-10: var(--velt-dark-mode-border-10);--velt-background-transparent: var(--velt-dark-mode-background-transparent);--velt-border-transparent: var(--velt-dark-mode-border-transparent);--velt-animation-transparent: var(--velt-dark-mode-animation-transparent)}.velt-confirm-dialog[_ngcontent-%COMP%]{width:455px;padding:40px;display:block;box-sizing:border-box;background-color:var(--velt-background-0)}.velt-confirm-dialog-actions[_ngcontent-%COMP%]{justify-content:space-between;gap:var(--velt-spacing-md);min-height:auto} .velt-mat-dialog-container mat-dialog-container .mat-mdc-dialog-surface.mdc-dialog__surface:has(snippyly-confirm-dialog){border-radius:var(--velt-border-radius-xl);padding:0}@media (max-width: 768px){.velt-confirm-dialog[_ngcontent-%COMP%]{width:auto;max-width:455px;padding:24px}}"],changeDetection:0});let n=o;return n})();var xn=(()=>{let o=class o{constructor(e,t,i,a,l,s,d,g,u,b,E,A,M,V,q,ae,fe,ie,Ce){this.afAuth=e,this.analyticsService=t,this.authService=i,this.configService=a,this.commonDbService=l,this.commonDbUtilsService=s,this.commentUtilsService=d,this.commentAnnotationsResolverService=g,this.notificationResolverService=u,this.databaseService=b,this.docService=E,this.domService=A,this.iamService=M,this.loggingService=V,this.notificationUtilsService=q,this.usersService=ae,this.functions=fe,this.userPermissionService=ie,this.coreActionsService=Ce,this.db=null,this.notificationsDb=null,this.documentPaths=null,this.notifications$=new Se([]),this.rawNotificationsByIdMap$=new Se(new Map),this.processedNotifications$=new Se([]),this.userNotificationsFromServer$=new Se(null),this.readNotificationsOnForYouTab$=new Se(!1),this.currentDocumentOnly$=new Se(!1),this.notificationViews$=new Se({}),this.notificationsByIdMap$=new Se(new Map),this.historyPanelVisible$=new Se(!1),this.notificationsForYou$=new Se(null),this.notificationsByDocumentIdMap$=new Se(null),this.notificationsByDocumentIdSubscription={},this.allowedDocumentMetadataMap$=new Se(null),this.maxNotificationDays$=new Se(15),this.tabConfig$=new Se({people:{enable:!1}}),this.settingsConfig$=new Se(null),this.setSettingsConfigByOrganization$=new Se(!1),this.muteAllNotifications$=new Se(!1),this.enableSettings$=new Se(!1),this.selfNotifications$=new Se(!1),this.settingsInitialConfig$=new Se([{name:"Inbox",id:"inbox",default:"ALL",enable:!0,values:[{name:"All",id:"ALL"},{name:"Only Involved",id:"MINE"},{name:"None",id:"NONE"}]},{name:"Email",id:"email",default:"MINE",enable:!0,values:[{name:"All",id:"ALL"},{name:"Only Involved",id:"MINE"},{name:"None",id:"NONE"}]}]),this.settingsConfigGeneration=0,this.notificationsPanelVisible$=new Se(!1);try{this.subscribeNotificationsData().subscribe(),this.commentUtilsService.setNotificationService(this),this.databaseService.getDb().pipe($e(xe=>!!xe),ut(1)).subscribe(xe=>{if(xe){this.db=xe;try{let ke=this.configService.getProxyConfig(),ye=En.firebaseNotificationsDatabaseURL;ke?.v1DbHost&&ye&&(ye=kN(ye,ke.v1DbHost)),this.notificationsDb=x1(void 0,ye),ke?.v1DbHost&&ye&&this.databaseService.lockDatabaseHost(this.notificationsDb)}catch(ke){this.loggingService.catch("Error initializing notifications DB, using default: ",ke),this.notificationsDb=xe}this.getDocumentIds(),this.subscribeGetNotificationsForYou()}},xe=>{this.loggingService.catch("Error in NotificationService getDb subscription: ",xe)}),this.authService.getUser$().subscribe(xe=>{xe?(this.subscribeGetNotificationsForYou(),this.getDocumentIds(),this.subscribeToUserSettings()):(Object.keys(this.notificationsByDocumentIdSubscription).forEach(ke=>{this.notificationsByDocumentIdSubscription[ke]?.unsubscribe()}),this.notificationForYouSubscription?.unsubscribe(),this.documentIdsSubscription?.unsubscribe(),this.resetCacheData())}),this.docService.getLocationMetadata$().subscribe(xe=>{if(xe){let ke=this.notificationsByDocumentIdMap$.getValue()?JSON.parse(JSON.stringify(this.notificationsByDocumentIdMap$.getValue())):null;Object.keys(xe||{}).forEach(ye=>{let Oe=ke?.[ye]?.notifications;Oe?.length&&Oe.forEach(Ne=>{this.notificationUtilsService.mergeLocationWithNotification({notification:Ne},xe)?.notification})}),this.notificationsByDocumentIdMap$.next(ke)}})}catch(xe){this.loggingService.catch("Error in NotificationService constructor: ",xe)}}setDBConfigDataToInitialConfig(e){try{let t=JSON.parse(JSON.stringify(this.settingsConfig$.getValue()??{}));Object.entries(e||{}).forEach(([i,a])=>{t[i]=a}),this.settingsConfig$.next(t)}catch(t){this.loggingService.catch("Error in NotificationService setDBConfigDataToInitialConfig: ",t)}}getInitialConfigFromDB(e){return Q(this,null,function*(){try{this.loggingService.log("%c[WB] Calling NotificationService FUNCTION: getInitialConfigFromDB","color: green;");let t=++this.settingsConfigGeneration,i=It(this.authService.getUser()?.userId??""),a=yield this.commonDbService.getData({feature:"userConfig",properties:{useCollectionGroup:!1,isCollection:!1,documentId:this.getSettingsConfigByOrganization()?void 0:e?.documentId,organizationId:e?.organizationId??this.docService.getOrganizationConfig()?.organizationId,userId:i}});if(t!==this.settingsConfigGeneration)return;if(a?.notificationsConfig)this.setDBConfigDataToInitialConfig(a?.notificationsConfig);else{this.setSettingsInitialConfig(this.settingsInitialConfig$.getValue());let l={};this.settingsInitialConfig$.getValue().forEach(d=>{if(d.enable){let g=d?.values?.find(u=>u.id===d.default);l[d.id]=g||d?.values?.[0]||{id:"NONE",name:"None"}}});let s={};Object.keys(l).forEach(d=>{s[d]=l[d].id}),yield this.updateSettingsConfigToDb(s)}}catch(t){this.loggingService.catch("Error in NotificationService getInitialConfigFromDB: ",t)}})}subscribeToUserSettings(){try{this.loggingService.log("%c[WB] Calling NotificationService FUNCTION: subscribeToUserSettings","color: green;"),this.userSettingsSubscription&&this.userSettingsSubscription.unsubscribe();let e=It(this.authService.getUser()?.userId??"");this.userSettingsSubscription=this.enableSettings$.pipe($e(t=>t===!0),_e(()=>pn([this.docService.getDocumentPaths$(),this.getSettingsConfigByOrganization$(),this.docService.getOrganizationConfig$()]).pipe($e(([t,i,a])=>(i||!!t)&&!!a?.organizationId),_e(([t,i,a])=>po(this.getInitialConfigFromDB(t)).pipe(_e(()=>this.commonDbService.dbListener({feature:"userConfig",properties:{useCollectionGroup:!1,isCollection:!1,documentId:i?void 0:t?.documentId,organizationId:t?.organizationId??a?.organizationId,userId:e}}).pipe(ue(l=>{l?.data?.notificationsConfig&&!Mr(l?.data?.notificationsConfig??{},this.settingsConfig$.getValue()??{})&&this.setDBConfigDataToInitialConfig(l?.data?.notificationsConfig)})))))))).subscribe()}catch(e){this.loggingService.catch("Error in NotificationService subscribeToUserSettings: ",e)}}resetCacheData(){try{this.loggingService.log("%c[WB] Calling NotificationService FUNCTION: resetCacheData","color: green;"),this.setUserNotificationsFromServer(null),this.notificationsByDocumentIdMap$.next(null),this.notificationsForYou$.next(null),this.settingsConfig$.next(null)}catch(e){this.loggingService.catch("Error in NotificationService resetCacheData: ",e)}}subscribeGetNotificationsForYou(){try{this.notificationForYouSubscription&&this.notificationForYouSubscription.unsubscribe(),this.notificationForYouSubscription=this.getNotificationsForYou().subscribe(()=>{},e=>{this.loggingService.catch("Error in NotificationService getNotificationsForYou subscription: ",e)})}catch(e){this.loggingService.catch("Error in NotificationService subscriveGetNotificationsForYou: ",e)}}setCommentService(e){try{this.commentService=e}catch(t){this.loggingService.catch("Error in NotificationService setCommentService: ",t)}}getDocumentIds(){try{this.documentIdsSubscription&&this.documentIdsSubscription.unsubscribe(),this.documentIdsSubscription=this.selfNotifications$.pipe(_e(()=>this.getCurrentDocumentOnly$().pipe(_e(e=>e?this.docService.getDocumentPaths$().pipe(ue(t=>{})):le(void 0)))),on(()=>{this.notificationsByDocumentIdMap$.next(null)}),_e(()=>this.getDocumentIdsByLastNotificationTimestamp().pipe(Nr(),ue(([e,t])=>{let i=e?.map(g=>g.documentId),a=t?.map(g=>g.documentId),l=i?.filter(g=>!a?.includes(g)),s=a?.map(g=>({documentId:g,timestamp:t?.find(u=>u.documentId===g)?.timestamp})).filter(g=>!i?.includes(g.documentId)),d=a?.map(g=>{let u=t?.find(b=>b.documentId===g)?.timestamp;return{documentId:g,timestamp:u}}).filter(g=>{let u=e?.find(b=>b.documentId===g.documentId)?.timestamp;return u&&g.timestamp&&u!==g.timestamp});s?.length&&this.fetchNotificationsForDocumentIds(s),d?.length&&this.fetchNotificationsForDocumentIds(d,1),l?.forEach(g=>{this.removeNotificationsForDocumentId(g)}),t&&!t?.length&&!this.notificationsByDocumentIdMap$.getValue()&&(this.notificationsByDocumentIdMap$.next({}),this.setUserNotificationsFromServer([]))})))).subscribe(()=>{},e=>{this.loggingService.catch("Error in NotificationService getDocumentIds subscription: ",e)})}catch(e){this.loggingService.catch("Error in NotificationService getDocumentIds: ",e)}}getDocumentIdsByLastNotificationTimestamp(e=15){try{return this.authService.getUser$().pipe(_e(t=>this.docService.getOrganizationConfig$().pipe(ue(i=>{let a=null,l=this.configService.getApiKey(),s=i?.organizationId||t?.organizationId;return l&&s&&(a=new dv({apiKey:l,organizationId:s})),{user:t,documentPaths:a}}))),_e(t=>{let{user:i,documentPaths:a}=t;if(this.getCurrentDocumentOnly()&&!this.docService?.getDocumentPaths()?.documentId)return le(null);if(i&&a?.organizationNotificationsLastNotificationTimestamp){let l=new Date,s=this.maxNotificationDays$.getValue()>0?this.maxNotificationDays$.getValue():15;l.setDate(l.getDate()-s);let d=l.getTime(),g=[_r(ft("timestamp",">=",d),...this.getCurrentDocumentOnly()&&this.docService.getDocumentPaths()?.documentId?[ft("metadata.documentId","==",this.docService.getDocumentPaths()?.documentId)]:[])];return this.getCurrentDocumentOnly()||(g.push(vo("timestamp","desc")),g.push(lv(e))),this.commonDbService.dbListener({feature:"allLastNotificationTimestamp",properties:{organizationId:a?.organizationId,isCollection:!0,useQuery:!0,firestoreQuery:g}}).pipe(ue(u=>u?.data),ue(u=>{let b=[];return Object.keys(u||{}).forEach(E=>{let A=this.commonDbService.shouldUseFirestore()?u[E]?.timestamp??0:u[E],M=this.commonDbService.shouldUseFirestore()?u[E]?.deletedNotification??!1:!1;if(M&&M.id&&M?.timestamp===A){let V=M.id,q=u[E]?.metadata?.documentId,ae=JSON.parse(JSON.stringify(this.notificationsByDocumentIdMap$.getValue()??{})),fe=ae?.[q]??{documentMetadata:null,notifications:[]},ie=fe.notifications??[],Ce=ie?.findIndex(xe=>xe.id===V);Ce!==-1&&(ie.splice(Ce,1),this.notificationsByDocumentIdMap$.next(k(f({},ae),{[q]:k(f({},fe),{notifications:ie})}))),this.notificationResolverService.notificationDataProviderAvailable()&&this.notificationResolverService.getNotificationById(V)&&this.notificationResolverService.deleteNotification(V,this.docService.getDocumentPaths()?.clientOrganizationId??"")}b.push({documentId:E,timestamp:A})}),b}),Jn(u=>(this.loggingService.catch("Error in NotificationService getDocumentIdsByLastNotificationTimestamp: ",u),le([]))))}return le(null)}))}catch(t){return this.loggingService.catch("Error in NotificationService getDocumentIdsByLastNotificationTimestamp: ",t),le([])}}resolveAndUpdateDocumentNotifications(e,t){try{Object.keys(e).forEach(i=>{let a=e[i]?.documentMetadata||{},l;if(t==="user")l=this.commonDbUtilsService.mergeUsersWithData({feature:"allDocNotifications",data:e[i]?.notifications||[]});else if(t==="notification"){let s=e[i]?.notifications?.reduce((g,u)=>(g[u.notificationId]=u,g),{}),d=this.commonDbUtilsService.mergeNotificationsWithResolvedData({feature:"allDocNotifications",data:s});l=Object.values(d??{})}else{let s=e[i]?.notifications?.reduce((g,u)=>(g[u.notificationId]=u,g),{}),d=this.commonDbUtilsService.mergeCommentAnnotationsWithData({feature:"allDocNotifications",data:s});l=Object.values(d??{})}l.forEach(s=>{s.notification=this.getClientNotificationObject(s)}),this.setNotificationForDocumentIdInCache(i,a,l)})}catch(i){this.loggingService.catch("Error in NotificationService resolveAndUpdateDocumentNotifications: ",i)}}resolveAndMergeUserNotifications(e,t,i=!1){try{let a=e;if(i&&t==="comment"){let u=this.getUserNotificationsFromServer()??[],b=new Set(e.map(E=>E.notificationId));a=u.filter(E=>b.has(E.notificationId)).concat(e.filter(E=>!u.some(A=>A.notificationId===E.notificationId)))}let l=a.reduce((u,b)=>(u[b.notificationId]=b,u),{}),s;if(t==="user"){let u=this.commonDbUtilsService.mergeUsersWithData({feature:"allUserNotifications",data:l});s=Object.values(u??{})}else if(t==="notification"){let u=this.commonDbUtilsService.mergeNotificationsWithResolvedData({feature:"allUserNotifications",data:l});s=Object.values(u??{})}else{let u=this.commonDbUtilsService.mergeCommentAnnotationsWithData({feature:"allUserNotifications",data:l});s=Object.values(u??{})}s.forEach(u=>{u.notification=this.getClientNotificationObject(u)});let d=this.getUserNotificationsFromServer()??[],g=new Map(d.map(u=>[u.notificationId,u]));s.forEach(u=>{g.set(u.notificationId,u)}),this.setUserNotificationsFromServer(Array.from(g.values()))}catch(a){this.loggingService.catch("Error in NotificationService resolveAndMergeUserNotifications: ",a)}}fetchNotificationsForDocumentIds(e,t=15){return Q(this,null,function*(){try{if(e?.length){let i=Gr(this.functions,Wr({url:En.cloudFunction.getNotificationsForDocuments,apiProxyDomain:this.configService?.getApiProxyDomain()}),{timeout:12e5}),a=this.docService.getOrganizationConfig()?.organizationId??"";if(!a)return[];let l=this.getStartAtTimestamp(),s={};if(e.forEach(ie=>{if(ie?.documentId){let Ce=this.getAllowedDocumentMetadataByDocumentId(ie.documentId);Ce&&(s[ie.documentId]=Ce)}}),this.userPermissionService?.isPermissionProviderAvailable())try{let ie=[];if(e.forEach(Oe=>{this.docService.getDocumentMetadata(Oe.documentId)||ie.push(Oe.documentId)}),ie.length){let Oe=this.authService.getUser(),Ne=Gr(this.functions,Wr({url:En?.cloudFunction?.sdkProxy,apiProxyDomain:this.configService?.getApiProxyDomain()}));try{let Ue=yield _l({methodName:"getDocumentMetadataFromIds",data:{type:"getDocumentMetadataFromIds",metadata:{organizationId:Oe?.clientOrganizationId,folderId:this.documentPaths?.folderId},documentIds:ie},getSdkProxy:Ne,userId:Oe?.userId??""});if(Ue?.data?.length){let ze={};Ue.data.forEach(Ge=>{Ge?.documentId&&(ze[Ge.documentId]=Ge)}),this.docService.setAllDocumentMetadata(f(f({},this.docService.getAllDocumentMetadataMap()),ze))}}catch(Ue){this.loggingService.warn("Error in NotificationService fetchNotificationsForDocumentIds: ",Ue)}}let Ce=[],xe=[];e.forEach(Oe=>{let Ne=this.docService.getDocumentMetadata(Oe.documentId);Ne?.clientDocumentId?Ce.push({userId:this.authService.getUser()?.userId??"",resource:{id:Ne.clientDocumentId,type:oa.DOCUMENT,source:ro.GET_NOTIFICATIONS,organizationId:this.docService.getOrganizationConfig()?.clientOrganizationId??""}}):xe.push(Oe.documentId)}),xe.length&&(e=e.filter(Oe=>!xe.includes(Oe.documentId)));let ke=ot();this.coreActionsService.triggerAction(Qe.PERMISSION_PROVIDER,{event:K.Events.PermissionProvider.RESOURCE_ACCESS_REQUEST_FORMED,timestamp:new Date().getTime(),uniqueId:ke,methodName:ro.GET_NOTIFICATIONS,source:"internal",payload:{requests:Ce}});let ye=yield this.userPermissionService?.onResourceAccessRequired({requests:Ce,uniqueId:ke,methodName:ro.GET_NOTIFICATIONS});ye?.success&&ye?.data?.length?ye.data.forEach(Oe=>{!Oe.hasAccess&&Oe.resourceId&&(e=e.filter(Ne=>Ne.documentId!==mi(Oe.resourceId)))}):e=[]}catch(ie){this.loggingService.warn("Error in NotificationService fetchNotificationsForDocumentIds: ",ie),e=[]}if(!e.length)return[];let d=this.userPermissionService?.getPermissionsCache()?.filter(ie=>ie.type===oa.CONTEXT),g={organizationId:a,documentIds:e.filter(ie=>!!ie.documentId&&!!ie.timestamp).map(ie=>({documentId:ie.documentId,timestamp:ie.timestamp??0})),timestamp:l,limitToLast:t,selfNotifications:this.selfNotifications$.value,isPermissionProviderUsed:this.userPermissionService?.isPermissionProviderAvailable(),getUserNotifications:!0,isContextEnabled:this.userPermissionService?.getIsContextEnabled(),cachedData:d,isSettingsConfigByOrganization:this.getSettingsConfigByOrganization(),retryConfig:this.userPermissionService?.getPermissionProviderRetryConfig()},u=yield this.notificationUtilsService.handleNotificationEncryption({data:g}),b=yield i({veltData:u}),E=b?.data?.data?.veltData||{},A=b?.data?.data?.veltAdditionalData||{},M="notificationwithdocumentidstoencryptanddecryptonsdk"+(this.authService.getUser()?.userId??""),V=yield Q1(E,M),{userNotifications:q=[],userNotificationIdsInDocNotifications:ae=[],permissionResults:fe=[]}=yield Q1(A,M);if(this.userPermissionService?.getIsContextEnabled()){let ie=[...this.userPermissionService?.getPermissionsCache()??[],...fe??[]];this.userPermissionService?.setPermissionsCache(ie)}if(V&&typeof V=="object"){let ie=this.usersService.userDataProviderAvailable(),Ce=this.commentAnnotationsResolverService.commentAnnotationDataProviderAvailable(),xe=this.notificationResolverService.notificationDataProviderAvailable(),ke=[],ye=[],Oe=[];Object.keys(V).forEach((ze,Ge)=>{let $r=V[ze].documentMetadata;if($r){let Tt=this.allowedDocumentMetadataMap$.value||{};(!Tt?.[ze]||!Mr(Tt?.[ze],$r))&&this.allowedDocumentMetadataMap$.next(k(f({},Tt),{[ze]:$r}))}let et=V[ze].notifications||[];et.forEach(Tt=>{ae.includes(Tt.notificationId)&&!q.find(Xe=>Xe.notificationId===Tt.notificationId)&&q.push(JSON.parse(JSON.stringify(Tt))),Tt.notification=this.getClientNotificationObject(Tt)}),this.setNotificationForDocumentIdInCache(ze,$r,et),ie&&(ke.push(this.commonDbUtilsService.formatResponse({feature:"allDocNotifications",data:et,shouldAwait:!0,forceResolve:!0})),ke.push(this.commonDbUtilsService.formatResponse({feature:"allUserNotifications",data:q,shouldAwait:!0,forceResolve:!0}))),Ce&&(ye.push(this.commonDbUtilsService.formatResponse({feature:"allDocNotifications",data:et,shouldCommentAnnotationsResolverAwait:!0})),ye.push(this.commonDbUtilsService.formatResponse({feature:"allUserNotifications",data:q,shouldCommentAnnotationsResolverAwait:!0}))),xe&&(Oe.push(this.commonDbUtilsService.formatResponse({feature:"allDocNotifications",data:et,shouldNotificationResolverAwait:!0})),Oe.push(this.commonDbUtilsService.formatResponse({feature:"allUserNotifications",data:q,shouldNotificationResolverAwait:!0})))});let Ne=JSON.parse(JSON.stringify(q));this.setUserNotificationsFromServer([...this.getUserNotificationsFromServer()??[],...q]),(xe||ie||Ce)&&(()=>{let ze=Promise.resolve();if(xe&&(ze=ze.then(()=>Promise.allSettled(Oe)).then(()=>{this.resolveAndUpdateDocumentNotifications(V,"notification"),this.resolveAndMergeUserNotifications(Ne,"notification")})),ie&&(ze=ze.then(()=>Promise.allSettled(ke)).then(()=>{this.resolveAndUpdateDocumentNotifications(V,"user"),this.resolveAndMergeUserNotifications(Ne,"user")})),Ce){let Ge=xe||ie;ze=ze.then(()=>Promise.allSettled(ye)).then(()=>{this.resolveAndUpdateDocumentNotifications(V,"comment"),this.resolveAndMergeUserNotifications(Ne,"comment",Ge)})}return ze})().catch(ze=>{this.loggingService.catch("Error in NotificationService resolveChain: ",ze)})}}}catch(i){return this.loggingService.catch("Error in NotificationService fetchNotificationsForDocumentIds: ",i),[]}})}getUserNotificationsFromServer$(){return this.userNotificationsFromServer$.asObservable()}setUserNotificationsFromServer(e){try{let t=JSON.parse(JSON.stringify(e));t=t?.filter((i,a,l)=>a===l.findIndex(s=>s.notificationId===i.notificationId)),this.userNotificationsFromServer$.next(t)}catch(t){this.loggingService.catch("Error in NotificationService setUserNotificationsFromServer: ",t)}}getUserNotificationsFromServer(){return this.userNotificationsFromServer$.getValue()}setNotificationForDocumentIdInCache(e,t,i,a){try{let l=this.docService.getOrganizationConfig()?.organizationId??"",s=this.docService.getOrganizationMetadata(l);t||(t=JSON.parse(JSON.stringify(this.docService.getDocumentMetadata()||{}))),s||(s=JSON.parse(JSON.stringify(this.docService.getOrganizationMetadata(l)||{})));let d=this.notificationsByDocumentIdMap$.getValue(),g=d?.[e]?.notifications||[],u=this.docService.getLocationMetadatas(),b=i?.map(M=>{let V=M?.notification;return V?(V.metadata&&(V.metadata.documentName=t?.documentName||V.metadata.documentName,V.metadata.organizationMetadata=s||V.metadata.organizationMetadata,V.metadata.documentMetadata=t||V.metadata.documentMetadata),u&&(V=this.notificationUtilsService.mergeLocationWithNotification({notification:V},u)?.notification),V):null})?.filter(M=>!!M)||[],E=new Map(g.map(M=>[M.id,M]));b.forEach(M=>{E.set(M.id,M)});let A=Array.from(E.values()).sort((M,V)=>(V.timestamp||0)-(M.timestamp||0));this.notificationsByDocumentIdMap$.next(k(f({},d),{[e]:{notifications:A,documentMetadata:t}}))}catch(l){this.loggingService.catch("Error in NotificationService setNotificationForDocumentIdInCache: ",l)}}removeNotificationsForDocumentId(e){try{this.notificationsByDocumentIdSubscription[e]&&this.notificationsByDocumentIdSubscription[e].unsubscribe();let t=this.notificationsByDocumentIdMap$.getValue();delete t?.[e],this.notificationsByDocumentIdMap$.next(t)}catch(t){this.loggingService.catch("Error in NotificationService removeNotificationsForDocumentId: ",t)}}getStartAtTimestamp(){try{let e=new Date,t=this.maxNotificationDays$.getValue()>0?this.maxNotificationDays$.getValue():15;return e.setDate(e.getDate()-t),e.getTime()}catch(e){return this.loggingService.catch("Error in NotificationService getStartAtTimestamp: ",e),0}}getNotificationsForYou(){try{return this.getUserNotificationsFromServer$().pipe(_e(e=>le(e).pipe($e(t=>!!t),ue(t=>{let i=this.usersService.userDataProviderAvailable(),a=this.commentAnnotationsResolverService?.commentAnnotationDataProviderAvailable(),l=this.notificationResolverService?.notificationDataProviderAvailable();if(l||i||a){let d=t?.reduce((g,u)=>(g[u.notificationId]=u,g),{});l&&(d=this.commonDbUtilsService.mergeNotificationsWithResolvedData({feature:"allUserNotifications",data:d||[]})),i&&(d=this.commonDbUtilsService.mergeUsersWithData({feature:"allUserNotifications",data:d||[]})),a&&(d=this.commonDbUtilsService.mergeCommentAnnotationsWithData({feature:"allUserNotifications",data:d||[]})),t=Object.values(d??{})}return t.forEach(d=>{d.notification=this.getClientNotificationObject(d)}),t.sort((d,g)=>g.timestamp-d.timestamp),t.map(d=>d.notification).filter(d=>!!d)}),_e(t=>{let i={data:t?.reduce((a,l)=>(a[l.id]={notification:l},a),{}),operation:null};return this.commonDbUtilsService.mergeLocationMetadataWithData$({data:i,feature:"allUserNotifications"}).pipe(ue(a=>Object.values(a?.data||{}).map(l=>l?.notification)))}))),_e(e=>{let t=this.docService.getOrganizationConfig()?.organizationId??"";return this.docService.getOrganizationMetadata$(t).pipe(ue(()=>e))}),_e(e=>this.allowedDocumentMetadataMap$.pipe(ue(()=>e))),ue(e=>(e?.length&&(e=e.map(t=>{if(t?.metadata){let i=this.docService.getOrganizationConfig()?.organizationId??"",a=this.getAllowedDocumentMetadataByDocumentId(t.metadata.documentId),l=this.docService.getOrganizationMetadata(i);a||(a=JSON.parse(JSON.stringify(this.docService.getDocumentMetadata()||{}))),l||(l=JSON.parse(JSON.stringify(this.docService.getOrganizationMetadata(i)||{}))),t.metadata.documentName=a?.documentName||t.metadata.documentName,t.metadata.organizationMetadata=l||t.metadata.organizationMetadata,t.metadata.documentMetadata=a||t.metadata.documentMetadata}return t})),e===null?this.notificationsForYou$.next(null):e?.length?this.notificationsForYou$.next(JSON.parse(JSON.stringify(e))):this.notificationsForYou$.next([]),le(e))))}catch(e){return this.loggingService.catch("Error in NotificationService getNotificationsForYou: ",e),le({})}}subscribeNotificationsData(e,t){this.loggingService.log("%c[WB] Calling FUNCTION: subscribeViewsData","color: green;");let i,a;try{if(e&&(a=Qn(e)),t&&typeof t=="object"){let l=Oi(t);i=Qn(JSON.stringify(l))}}catch(l){this.loggingService.catch("Error in ViewsService subscribeViewsData: ",l)}return fr(this.afAuth).pipe($e(l=>!!l),_e(l=>this.isFeatureAllowed({firebaseUser:l})),_e(l=>l.featureAllowed?this.iamService.isUserAllowed$().pipe(ue(s=>(l.featureAllowed=s,l))):le(l)),_e(l=>!l.featureAllowed||l?.user?.organizationId?(this.notifications$.next([]),this.rawNotificationsByIdMap$.next(new Map),this.processedNotifications$.next([]),this.notificationsByIdMap$.next(new Map),this.notificationViews$.next({}),this.setNotificationsByIdMap(),le([])):le(l).pipe(_e(s=>this.docService.getDocumentPaths$().pipe(ue(d=>(this.documentPaths=d,s.documentPaths=d,s)))),_e(s=>this.getDataFromDocumentId(a)))))}isFeatureAllowed(e){return this.configService.getConfig$().pipe($e(t=>!!t),ue(t=>k(f({},e),{config:t})),_e(t=>this.authService.getUser$().pipe(ue(i=>k(f({},t),{user:i})))),_e(t=>Ao(t.config,t.user,je.NOTIFICATION)?le(k(f({},t),{featureAllowed:!0})):(this.loggingService.warn("Notification feature is not allowed."),le(k(f({},t),{featureAllowed:!1})))))}getDataFromDocumentId(e){return this.databaseService.getDb().pipe($e(t=>!!t),_e(t=>{if(this.db=t,this.loggingService.log(this.db),this.configService?.getApiKey()&&this.documentPaths?.views){let i=`${this.configService.getApiKey()}`;this.documentPaths?.organizationId&&(i+=`/${U.FIREBASE_PARTIAL_PATH_ORGANIZATIONS}/${this.documentPaths.organizationId}`);let a=Ur(this.db,`${e?i+"/"+U.FIREBASE_PARTIAL_PATH_DOCS+"/"+e+"/"+U.FIREBASE_PARTIAL_PATH_VIEWS+"/":this.documentPaths?.notifications}`);return f8(a).pipe(Jn(l=>(this.loggingService.catch("Error in NotificationService getDataFromDocumentId: ",l),le(null))),ue(l=>{let s=[],d=new Map;l?.raw&&(Object.keys(l?.raw||{}).forEach(u=>{let b=l?.raw[u];b?.id&&s.push(b)}),s.forEach(u=>{u.id&&d.set(u.id,u)})),this.notifications$.next(s),this.rawNotificationsByIdMap$.next(d);let g=[];l?.processed&&Object.keys(l?.processed||{}).forEach(u=>{let b=l?.processed[u];b?.id&&g.push(b)}),this.processedNotifications$.next(g),this.setNotificationsByIdMap()}))}else return le(null)}))}setNotificationsByIdMap(){try{let e=this.authService.getUser();if(e){let t=this.notificationViews$.getValue(),i;e?.email&&(i=It(e?.email));let a;e?.userId&&(a=It(e?.userId));let l=new Map;this.processedNotifications$.getValue().forEach(d=>{if(d.id&&d?.displayHeadlineMessageTemplate){let g=!1;(i&&d.notifyUsers?.[i]||a&&d.notifyUsers?.[a])&&(g=!0);let u={id:d.id,notificationSource:d.notificationSource,actionType:d.actionType,actionUser:d.actionUser,timestamp:d.timestamp,targetAnnotationId:d.targetAnnotationId,displayHeadlineMessage:this.getNotificationHeadlineMessage(d),displayBodyMessage:this.getNotificationBodyMessage(d),forYou:g,notificationSourceData:d.notificationSourceData},b=this.getRawNotificationById(u.id);if(b?.metadata&&(u.metadata={apiKey:b.metadata.apiKey,organizationId:b.metadata.organizationId,clientOrganizationId:b.metadata.clientOrganizationId,documentId:b.metadata.documentId,clientDocumentId:b.metadata.clientDocumentId,location:b?.location,locationId:b?.locationId}),u?.notificationSource==="comment"&&u?.targetAnnotationId){let E=this.commentService?.getAnnotationById(u.targetAnnotationId);E||b?.annotationData&&(E=b.annotationData),E&&(u.notificationSourceData=this.commentService?.getCommentAnnotationForClient(E))}l.set(d.id,u)}}),l.forEach((d,g)=>{d.isUnread=d?.actionUser?.userSnippylyId!==e?.userSnippylyId&&!t?.notification?.[g]?.views?.[e?.userSnippylyId],l.set(g,d)}),this.notificationsByIdMap$.next(l)}}catch(e){this.loggingService.catch("Error in NotificationService setNotificationsByIdMap: ",e)}}getClientNotificationObject({processed:e,raw:t,metadata:i,views:a,notification:l}){try{let s=this.authService.getUser(),d=l||e;if(d.id&&d?.displayHeadlineMessageTemplate&&s){let g=null;s?.email&&(g=It(s?.email));let u=null;s?.userId&&(u=It(s?.userId));let b=!1,E=!0;(g&&d.notifyUsers?.[g]||u&&d.notifyUsersByUserId?.[u])&&(b=!0),u&&a?.[u]&&(E=!1);let A={id:d.id};if(l?A=k(f(f({},A),l),{displayHeadlineMessage:this.getNotificationHeadlineMessage(l),displayBodyMessage:this.getNotificationBodyMessage(l),forYou:b,isUnread:E}):A={id:e.id,notificationSource:e.notificationSource,actionType:e.actionType,actionUser:e.actionUser,timestamp:e.timestamp,targetAnnotationId:e.targetAnnotationId,displayHeadlineMessage:this.getNotificationHeadlineMessage(e),displayBodyMessage:this.getNotificationBodyMessage(e),forYou:b,isUnread:E,metadata:i},A?.notificationSource==="comment"&&A?.targetAnnotationId){let M=this.commentService?.getAnnotationById(A.targetAnnotationId);M||l?.notificationSourceData&&(M=l?.notificationSourceData),M||t?.annotationData&&(M=t.annotationData),M&&(A.notificationSourceData=this.commentService?.getCommentAnnotationForClient(M))}return t?.targetAnnotationData?.isCommentResolverUsed&&(A.isCommentResolverUsed=t?.targetAnnotationData?.isCommentResolverUsed),l?.isNotificationResolverUsed&&(A.isNotificationResolverUsed=l.isNotificationResolverUsed),A}return}catch(s){this.loggingService.catch("Error in NotificationService getClientNotificationObject: ",s);return}}getNotificationsForYou$(){return this.notificationsForYou$.asObservable()}getNotificationsByDocumentId$(){return this.notificationsByDocumentIdMap$.asObservable().pipe(ue(e=>e?Object.keys(e??{}).map(t=>{let i=e[t].notifications||[],a=i.filter(s=>s.isUnread).length,l=i.length>0&&i[0]?.timestamp||0;return{documentId:t,notifications:e[t]?.notifications,unreadNotificationsCount:a,latestNotificationTimestamp:l,documentMetadata:e[t]?.documentMetadata}}).filter(t=>t.notifications?.length>0).sort((t,i)=>i.latestNotificationTimestamp-t.latestNotificationTimestamp):null))}getAllNotifications$(){return this.getNotificationsByDocumentId$().pipe(ue(e=>{let t=null;return e?(t=[],e.forEach(i=>{i.notifications.forEach(a=>{t?.push(a)})}),t?.sort((i,a)=>a.timestamp-i.timestamp)):null}))}processNotificationData(e){try{let t=e?.annotationData?.metadata,i=this.docService.getOrganizationConfig()?.organizationId;e.metadata=JSON.parse(JSON.stringify(this.docService.getDocumentMetadata(t?.documentId)||{})),e.metadata||(e.metadata={},this.loggingService.catch("Warning in NotificationService updateNotificationDatabase: ","Document metadata not found")),delete e.metadata.locations,e.metadata.documentMetadata=JSON.parse(JSON.stringify(this.docService.getDocumentMetadata(t?.documentId)||{})),e?.metadata?.documentMetadata?.clientDocumentId&&e?.metadata?.documentMetadata?.documentId&&(e.metadata.documentMetadata.documentId=e?.metadata?.documentMetadata?.clientDocumentId),delete e.metadata.documentMetadata.locations,e.metadata.organizationMetadata=JSON.parse(JSON.stringify(i?this.docService.getOrganizationMetadata(i)||{}:{})),e?.metadata?.organizationMetadata?.clientOrganizationId&&e?.metadata?.organizationMetadata?.organizationId&&(e.metadata.organizationMetadata.organizationId=e?.metadata?.organizationMetadata?.clientOrganizationId);let a=this.configService.getApiKey();e.metadata.apiKey=a,e.platform=this.configService.getSF()?"sf":"sdk",e.actionUser=this.authService.getUser();let l=t?.documentId?new dv({apiKey:a,documentId:t.documentId,organizationId:t?.organizationId}):this.docService.getDocumentPaths();e?.actionUser?.organizationId&&(e.metadata.organizationId=l?.organizationId||e.actionUser.organizationId,e.metadata.clientOrganizationId=l?.clientOrganizationId||e.actionUser.clientOrganizationId);let s=this.docService.getLocation();s&&(e.location=s?.location,e.locationId=s?.locationId),this.loggingService.log(`[NOTIFICATION] ${e?.notificationSource} ${e?.actionType}`,e);let d=this.commonDbService.getServerTimestamp(),g=this.notificationUtilsService.formatNotification(e,d);return JSON.parse(JSON.stringify(g))}catch(t){return this.loggingService.catch("Error in NotificationService processNotificationData: ",t),null}}updateNotificationDatabase(e){try{if(!this.notificationsDb)return;let t=Ur(this.notificationsDb),i=this.processNotificationData(e);s8(t,JSON.parse(JSON.stringify(i)))}catch(t){this.loggingService.catch("Error in NotificationService updateNotificationDatabase: ",t)}}getRawNotifications$(){return this.notifications$.asObservable()}getProcessedNotifications$(){return this.processedNotifications$.asObservable()}getNotifications$(e){return this.authService.getUser$().pipe(_e(t=>t?t.organizationId?this.getAllNotifications$().pipe(_e(i=>this.notificationsForYou$.pipe(ue(a=>{if(i||a){let l=new Map;return(!e?.type||["all","documents"].includes(e.type))&&(i||[]).forEach(s=>{s.id&&l.set(s.id,s)}),(!e?.type||["all","forYou"].includes(e.type))&&(a||[]).forEach(s=>{s.id&&!l.has(s.id)&&l.set(s.id,s)}),Array.from(l.values()).sort((s,d)=>(d.timestamp||0)-(s.timestamp||0))}else return null})))):this.notificationsByIdMap$.asObservable().pipe(ue(i=>Array.from(i.values())),ue(i=>i.sort((a,l)=>l.timestamp-a.timestamp)),Vh()):le(null)),xt(Jt))}getRawNotificationById(e){try{return this.rawNotificationsByIdMap$.getValue()?.get(e)}catch(t){this.loggingService.catch("Error in NotificationService getRawNotificationById: ",t);return}}setNotificationViews(e){try{this.notificationViews$.next(e),this.setNotificationsByIdMap()}catch(t){this.loggingService.catch("Error in NotificationService setNotificationViews: ",t)}}getNotificationHeadlineMessage(e){try{let t=this.authService.getUser();if(e?.displayHeadlineMessageTemplate&&e?.displayHeadlineMessageTemplateData){let i=e.displayHeadlineMessageTemplate,a=e.displayHeadlineMessageTemplateData,l=/\{(\w+)\}/g,s=i.replace(l,(d,g)=>(g==="actionUser"||g==="recipientUser")&&a[g]?t?.email&&a[g].email===t?.email||t?.userId&&a[g]?.userId===t?.userId?"You":a[g].name||a[g].email||' <velt-skeleton-loader width="50px" height="20px" border-radius="4px"></velt-skeleton-loader> ':a[g]?a[g]:d);return this.domService.sanitizeHtml(s)}return this.domService.sanitizeHtml(e.displayHeadlineMessageTemplate||"")}catch(t){return this.loggingService.catch("Error in NotificationService getNotificationHeadlineMessage: ",t),""}}getNotificationBodyMessage(e){try{if(e?.displayBodyMessageTemplate&&e?.displayBodyMessageTemplateData){let t=e?.displayBodyMessageTemplate;return e?.displayBodyMessageTemplateData&&e?.displayBodyMessageTemplateData?.users?.forEach(i=>{if(i?.userId){let a=this.usersService.getUserById(i?.userId);t=t?.replaceAll(`{{${i.userId}}}`,a?.name||a?.email||'<velt-skeleton-loader width="50px" height="20px" border-radius="4px"></velt-skeleton-loader>'),t=t?.replaceAll(`@User ${i.userId}`,a?.name||a?.email||'<velt-skeleton-loader width="50px" height="20px" border-radius="4px"></velt-skeleton-loader>')}}),this.domService.sanitizeHtml(t)}return this.domService.sanitizeHtml(e.displayBodyMessage||"")}catch(t){return this.loggingService.catch("Error in NotificationService getNotificationBodyMessage: ",t),""}}setHistoryPanelVisibility(e,t=!1,i=!1){try{e?document.querySelector(U.TAGS.VELT_NOTIFICATIONS_HISTORY_PANEL)?this.historyPanelVisible$.next(e):this.loggingService.catch("Error in NotificationService setHistoryPanelVisibility: ",`<${U.TAGS.VELT_NOTIFICATIONS_HISTORY_PANEL}> tag is not added.`):this.historyPanelVisible$.next(e),e?this.analyticsService.trackEvent(K.Events.Notifications.NOTIFICATION_HISTORY_PANEL_OPENED):this.analyticsService.trackEvent(K.Events.Notifications.NOTIFICATION_HISTORY_PANEL_CLOSED)}catch{this.loggingService.catch("Error in NotificationService setHistoryPanelVisibility: ",`<${U.TAGS.VELT_NOTIFICATIONS_HISTORY_PANEL}> tag is not added.`)}}toggleHistoryPanelVisibility(e=!1,t=!1){try{this.historyPanelVisible$.value?this.historyPanelVisible$.next(!this.historyPanelVisible$.value):document.querySelector(U.TAGS.VELT_NOTIFICATIONS_HISTORY_PANEL)?(this.historyPanelVisible$.next(!this.historyPanelVisible$.value),this.historyPanelVisible$.value?this.analyticsService.trackEvent(K.Events.Notifications.NOTIFICATION_HISTORY_PANEL_TOGGLED,{action:"closed"}):this.analyticsService.trackEvent(K.Events.Notifications.NOTIFICATION_HISTORY_PANEL_TOGGLED,{action:"opened"})):this.loggingService.catch("Error in NotificationService toggleHistoryPanelVisibility: ",`<${U.TAGS.VELT_NOTIFICATIONS_HISTORY_PANEL}> tag is not added.`)}catch{this.loggingService.catch("Error in NotificationService toggleHistoryPanelVisibility: ",`<${U.TAGS.VELT_NOTIFICATIONS_HISTORY_PANEL}> tag is not added.`)}}getHistoryPanelVisibility$(){return this.historyPanelVisible$.asObservable()}setNotificationsAsRead(e){return Q(this,null,function*(){try{let t=JSON.parse(JSON.stringify(this.getUserNotificationsFromServer()??[]));if(e?.length){for(let s=0;s<e.length;s+=50){let g=e.slice(s,s+50).filter(E=>E?.id),u=g.map(E=>this.setNotificationAsRead({notification:E,userNotifications:JSON.parse(JSON.stringify(t))})),b=yield Promise.all(u);g.forEach((E,A)=>{let M=b[A];if(!M.some(q=>q.notificationId===E.id))t=t.filter(q=>q.notificationId!==E.id);else{let q=t.find(fe=>fe.notificationId===E.id),ae=M.find(fe=>fe.notificationId===E.id);q&&ae?.views&&(q.views=ae.views)}})}let a=JSON.parse(JSON.stringify(this.notificationsByDocumentIdMap$.getValue()||{}));e.forEach(s=>{let d=s.metadata?.documentId;if(d&&a?.[d]){let g=a?.[d]?.notifications||[],u=g.find(b=>b.id===s.id);u&&(u.isUnread=!1),a[d].notifications=g}}),this.notificationsByDocumentIdMap$.next(a),!Mr(t,this.getUserNotificationsFromServer())&&this.setUserNotificationsFromServer(t)}}catch(t){this.loggingService.catch("Error in NotificationService setNotificationsAsRead: ",t)}})}setAllNotificationsAsRead(e){return Q(this,null,function*(){try{if(e?.tabId==="for-you"){let t=this.notificationsForYou$.value||[];this.setNotificationsAsRead(t)}else this.getNotifications$().pipe(ut(1)).subscribe(t=>{t&&this.setNotificationsAsRead(t)})}catch(t){this.loggingService.catch("Error in NotificationService setAllNotificationsAsRead: ",t)}})}getUnreadNotificationsCount$(){try{return this.notificationsForYou$.pipe(ue(e=>e?.filter(i=>i?.isUnread)?.length??null),_e(e=>this.getNotifications$().pipe(ue(t=>{let i=t?.filter(a=>a?.isUnread)?.length??null;return{forYou:e,all:i}}))))}catch(e){return this.loggingService.catch("Error in NotificationService getUnreadNotificationsCount$: ",e),le({forYou:null,all:null})}}setNotificationAsRead(i){return Q(this,arguments,function*({notification:e,userNotifications:t}){try{let a=this.authService.getUser();if(a&&e?.id){let l=It(a?.userId),{metadata:s}=e;if(s){let{apiKey:d,organizationId:g,documentId:u}=s;if(d&&g&&u&&l){let b=yield this.commonDbService.getData({feature:"docNotification",properties:{id:e.id,organizationId:g,documentId:u,apiKey:d}});b?.notificationId&&(b?.views?.[l]||(b.views||(b.views={}),b.views[l]={timestamp:Date.now()},this.commonDbService.updateData({feature:"docNotificationViews",properties:{id:e.id,organizationId:g,documentId:u,apiKey:d},data:b})));let E=yield this.commonDbService.getData({feature:"userNotification",properties:{id:e.id,userId:l,documentId:u,organizationId:g}});if(E?.notificationId){if(!this.getReadNotificationsOnForYouTab())yield this.commonDbService.deleteData({feature:"userNotification",properties:{id:e.id,userId:l,documentId:u,organizationId:g}}),t=t.filter(A=>A.notificationId!==e.id);else if(!E?.views?.[l]){E.views||(E.views={}),E.views[l]={timestamp:Date.now()};let A=t.find(M=>M.notificationId===e.id);A&&(A.views=E.views),this.commonDbService.updateData({feature:"userNotificationViews",properties:{id:e.id,userId:l,documentId:u,organizationId:g},data:E})}}}}}return t}catch(a){return this.loggingService.catch("Error in NotificationService setNotificationAsRead: ",a),t}})}setMaxDays(e){try{e>0?this.maxNotificationDays$.next(e):this.maxNotificationDays$.next(15)}catch(t){this.loggingService.catch("Error in NotificationService setMaxDays: ",t)}}setTabConfig(e){try{e&&this.tabConfig$.next(e)}catch(t){this.loggingService.catch("Error in NotificationService setTabConfig: ",t)}}getTabConfig$(){return this.tabConfig$.asObservable()}getTabConfig(){return this.tabConfig$.value}enableReadNotificationsOnForYouTab(){this.readNotificationsOnForYouTab$.next(!0)}disableReadNotificationsOnForYouTab(){this.readNotificationsOnForYouTab$.next(!1)}getReadNotificationsOnForYouTab$(){return this.readNotificationsOnForYouTab$.asObservable()}getReadNotificationsOnForYouTab(){return this.readNotificationsOnForYouTab$.value}enableCurrentDocumentOnly(){try{if(this.currentDocumentOnly$.value===!0)return;this.currentDocumentOnly$.next(!0)}catch(e){this.loggingService.catch("Error in NotificationService enableCurrentDocumentOnly: ",e)}}disableCurrentDocumentOnly(){try{if(this.currentDocumentOnly$.value===!1)return;this.currentDocumentOnly$.next(!1)}catch(e){this.loggingService.catch("Error in NotificationService disableCurrentDocumentOnly: ",e)}}getCurrentDocumentOnly$(){return this.currentDocumentOnly$.asObservable()}getCurrentDocumentOnly(){return this.currentDocumentOnly$.value}markNotificationAsReadById(e){return Q(this,null,function*(){try{this.getNotifications$().pipe(ut(1)).subscribe(t=>{if(t){let i=t.filter(a=>a.id===e);this.setNotificationsAsRead(i)}})}catch(t){this.loggingService.catch("Error in NotificationService markNotificationAsReadById: ",t)}})}getAllowedDocumentMetadataByDocumentId(e){try{return this.allowedDocumentMetadataMap$.value?.[e]||null}catch(t){return this.loggingService.catch("Error in NotificationService getAllowedDocumentMetadataByDocumentId: ",t),null}}setSettingsConfig(e){try{this.enableSettings$.value&&this.settingsConfig$.next(e)}catch(t){this.loggingService.catch("Error in NotificationService setSettingsConfig: ",t)}}setSettingsConfigWithDB(e){try{this.enableSettings$.value&&(this.settingsConfig$.next(e),this.updateSettingsConfigToDb())}catch(t){this.loggingService.catch("Error in NotificationService setSettingsConfigWithDB: ",t)}}getSettingsConfig$(){return this.settingsConfig$.asObservable()}getSettingsConfig(){return this.settingsConfig$.value}setMuteAllNotifications(){try{this.muteAllNotifications$.value!==!0&&this.muteAllNotifications$.next(!0)}catch(e){this.loggingService.catch("Error in NotificationService setSettingsMuteAll: ",e)}}getMuteAllNotifications$(){return this.muteAllNotifications$.asObservable()}getMuteAllNotifications(){return this.muteAllNotifications$.value}enableSettings(){try{this.enableSettings$.value!==!0&&this.enableSettings$.next(!0)}catch(e){this.loggingService.catch("Error in NotificationService enableSettings: ",e)}}enableSettingsConfigByOrganization(){try{this.getSettingsConfigByOrganization()!==!0&&this.setSettingsConfigByOrganization$.next(!0)}catch(e){this.loggingService.catch("Error in NotificationService enableSettingsConfigByOrganization: ",e)}}disableSettingsConfigByOrganization(){try{this.getSettingsConfigByOrganization()!==!1&&this.setSettingsConfigByOrganization$.next(!1)}catch(e){this.loggingService.catch("Error in NotificationService disableSettingsConfigByOrganization: ",e)}}getSettingsConfigByOrganization$(){return this.setSettingsConfigByOrganization$.asObservable()}getSettingsConfigByOrganization(){return this.setSettingsConfigByOrganization$.value}enableSelfNotifications(){try{this.selfNotifications$.value!==!0&&this.selfNotifications$.next(!0)}catch(e){this.loggingService.catch("Error in NotificationService enableSelfNotifications: ",e)}}disableSelfNotifications(){try{this.selfNotifications$.value!==!1&&this.selfNotifications$.next(!1)}catch(e){this.loggingService.catch("Error in NotificationService disableSelfNotifications: ",e)}}disableSettings(){try{this.enableSettings$.value!==!1&&this.enableSettings$.next(!1)}catch(e){this.loggingService.catch("Error in NotificationService disableSettings: ",e)}}getEnableSettings$(){return this.enableSettings$.asObservable()}getEnableSettings(){return this.enableSettings$.value}setSettingsInitialConfig(e){try{let t=!1;if(e.forEach(i=>{["email","inbox"].includes(i.id)&&(t=!i.values?.every(a=>["ALL","NONE","MINE"].includes(a.id)))}),t){this.loggingService.catch("Invalid config values for email or inbox, It should have only ALL, NONE, MINE values");return}this.settingsInitialConfig$.next(e)}catch(t){this.loggingService.catch("Error in NotificationService setSettingsInitialConfig: ",t)}}getSettingsInitialConfig$(){return this.settingsInitialConfig$.asObservable()}getSettingsInitialConfig(){return this.settingsInitialConfig$.value}updateSettingsConfigToDb(e){return Q(this,null,function*(){try{let t=this.authService.getUser(),i=It(t?.userId??""),a=this.docService.getDocumentPaths(),l=this.docService.getOrganizationConfig(),s=a?.organizationId??l?.organizationId,d=a?.clientOrganizationId??l?.clientOrganizationId,g={apiKey:this.configService.getApiKey(),organizationId:s,documentId:a?.documentId,clientOrganizationId:d,clientDocumentId:a?.clientDocumentId,userId:i,clientUserId:this.authService.getUser()?.userId};i&&this.getEnableSettings()&&this.enableSettings$.value&&(this.getSettingsConfigByOrganization()?this.docService.addUserInfoToOrganization({organizationId:d??t?.clientOrganizationId??"",user:{userId:t?.userId??""},notificationsConfig:e||this.settingsConfig$.getValue()}):a?.documentId&&(yield this.commonDbService.updateData({feature:"userConfig",properties:{documentId:a?.documentId,userId:i},data:{id:a?.documentId,notificationsConfig:e||this.settingsConfig$.getValue(),metadata:g}})))}catch(t){this.loggingService.catch("Error in NotificationService updateSettingsConfigToDb: ",t)}})}openNotificationsPanel(){try{this.notificationsPanelVisible$.next(!0)}catch(e){this.loggingService.catch("Error in NotificationService openNotificationsPanel: ",e)}}closeNotificationsPanel(){try{this.notificationsPanelVisible$.next(!1)}catch(e){this.loggingService.catch("Error in NotificationService closeNotificationsPanel: ",e)}}getNotificationsPanelVisible$(){return this.notificationsPanelVisible$.asObservable()}getNotificationsPanelVisible(){return this.notificationsPanelVisible$.value}};o.\u0275fac=function(t){return new(t||o)(X(eo),X(lt),X(We),X(Ft),X(Tn),X(rd),X(cv),X(rl),X(mv),X($n),X(ct),X(Be),X(Ln),X(x),X(LL),X(An),X(Do),X(il),X(tr))},o.\u0275prov=Me({token:o,factory:o.\u0275fac,providedIn:"root"});let n=o;return n})();var lm=(()=>{let o=class o{constructor(e,t,i,a,l,s,d,g,u,b,E,A,M){this.analyticsService=e,this.configService=t,this.docService=i,this.databaseService=a,this.commonDbService=l,this.authService=s,this.domService=d,this.afAuth=g,this.iamService=u,this.dialog=b,this.loggingService=E,this.notificationService=A,this.userPermissionService=M,this.areaAnnotationById$=new Se({}),this.documentPaths=null,this.areaEnabled$=new Se(!0),this.allowedElementIds$=new Se([]),this.addAreaMode$=new Se(!1),this.loggingService.log("%c[WB] Creating CLASS: AreaService","color: blue;"),this.analyticsService.setAreaService(this),this.authService.setAreaService(this),this.databaseService.getDb().pipe($e(V=>!!V),ut(1)).subscribe(V=>{V&&this.getDocumentPaths()},V=>{this.loggingService.catch("Error in AreaService getDb subscription: ",V)}),this.domService.onWindowPointerMove$().subscribe(V=>{if(this.addAreaMode$.value){this.highlightElement&&this.domService.removeHighlightFromElement(this.highlightElement);let q=this.domService.getBackgroundElement(V.clientX,V.clientY);q&&(this.isElementInsideAllowedElements(q)?wN(V.target)?this.domService.removeClassFromElement(document.body,"show-pin-cursor"):(this.domService.addClassToElement(document.body,"show-pin-cursor"),this.highlightElement=q,this.domService.highlightElement(this.highlightElement,U.CURSOR.AREA_PIN)):this.domService.removeClassFromElement(document.body,"show-pin-cursor"))}},V=>{this.loggingService.catch("Error in AreaService onWindowPointerMove$ subscription: ",V)}),this.domService.onWindowKeyupEsc$().subscribe(V=>{this.addAreaMode$.value&&this.disableAddAreaMode()},V=>{this.loggingService.catch("Error in AreaService onWindowKeyupEsc$ subscription: ",V)}),this.domService.onDocumentClick$().subscribe(V=>{if(V&&this.addAreaMode$.value){if(V.preventDefault(),V.stopPropagation(),!wN(V.target)){let q=this.domService.getBackgroundElement(V.clientX,V.clientY);q&&this.isElementInsideAllowedElements(q)&&this.addArea(V)}this.disableAddAreaMode()}},V=>{this.loggingService.catch("Error in AreaService onDocumentClick$ subscription: ",V)}),this.addAreaMode$.subscribe(V=>{this.highlightElement&&this.domService.removeHighlightFromElement(this.highlightElement),V?this.domService.addClassToElement(document.body,"snippyly-add-area-mode"):(this.domService.removeClassFromElement(document.body,"snippyly-add-area-mode"),this.domService.removeClassFromElement(document.body,"show-pin-cursor"))},V=>{this.loggingService.catch("Error in AreaService addAreaMode$ subscription: ",V)}),this.domService.onWindowKeyupBackspace$().subscribe(V=>{this.deleteAreaPinAnnotations("keyupBackspace")},V=>{this.loggingService.catch("Error in AreaService onWindowKeyupBackspace$ subscription: ",V)}),this.domService.onWindowKeyupDelete$().subscribe(V=>{this.deleteAreaPinAnnotations("keyupDelete")},V=>{this.loggingService.catch("Error in AreaService onWindowKeyupDelete$ subscription: ",V)})}clearCache(){this.loggingService.log("%c[WB] Calling FUNCTION: clearCache in AreaService","color: green;");try{this.areaAnnotationById$.next({}),this.areaEnabled$.next(!0),this.allowedElementIds$.next([]),this.addAreaMode$.next(!1),this.highlightElement=null}catch(e){this.loggingService.catch("Error in AreaService clearCache: ",e)}}getDocumentPaths(){this.loggingService.log("%c[WB] Calling FUNCTION: getDocumentPaths","color: green;"),this.docService.getDocumentPaths$()}setAllowedElementIds(e){this.allowedElementIds$.next(e||[])}getAllowedElementIds(){return this.allowedElementIds$.asObservable()}getAllAreaAnnotations(e,t,i){this.loggingService.log("%c[WB] Calling FUNCTION: getAllAreaAnnotations","color: green;");let a,l;try{if(e&&(l=Qn(e)),t&&typeof t=="object"){let s=Oi(t);a=Qn(JSON.stringify(s))}}catch(s){this.loggingService.catch("Error in AreaService getAllAreaAnnotations: ",s)}return fr(this.afAuth).pipe($e(s=>!!s),_e(s=>this.isFeatureAllowed({firebaseUser:s,annotations:[],filteredAnnotations:[]})),_e(s=>s.featureAllowed?this.iamService.isUserAllowed$().pipe(ue(d=>(s.featureAllowed=d,s))):le(s)),_e(s=>s.featureAllowed?this.authService.isPlanExpired$().pipe(ue(d=>(s.featureAllowed=!d,s))):le(s)),_e(s=>s.featureAllowed?le(s).pipe(_e(d=>this.docService.getDocumentPaths$().pipe(ue(g=>(this.documentPaths=g,d.documentPaths=g,d)))),_e(d=>l?this.getDataFromDocumentIds([l]).pipe(ue(g=>(d.annotations=g||[],f({},d)))):this.docService.getDocumentIds$().pipe(_e(g=>{let u=g?.length>0?g.map(b=>b.documentId):[this.documentPaths?.documentId??""];return this.getDataFromDocumentIds(u).pipe(ue(b=>(d.annotations=b||[],f({},d))))}))),_e(d=>this.docService.getLocation$().pipe(ue(g=>(d.location=g,d)))),_e(d=>this.docService.getLocations$().pipe(ue(g=>(d.customLocations=g,d)))),ue(d=>{if(d.filteredAnnotations=[],l&&!a)return d.filteredAnnotations=d.annotations?.slice(),d;{let g=[],u=[];return a?g.push(a):(g.push(d?.location?.locationId),g.push(...Object.values(d?.customLocations||[]).map(b=>b.locationId)),d?.location?.location?.id&&u.push(d?.location?.location?.id)),d.filteredAnnotations=this.filterAnnotationsByLocationIds(d?.annotations,g,u),d}}),_e(d=>i?le(d):d?.annotations?.length?this.domService.onWindowResize$().pipe(ue(()=>d)):le(d)),_e(d=>i?le(d):d?.annotations?.length?this.domService.onDomChange$("AreaService getAllAreaAnnotations").pipe(ue(()=>d)):le(d)),ue(d=>(d.filteredAnnotations=d.filteredAnnotations?.map(g=>{let u=Object.assign({},g);return u.areaProperties=this.calculateAreaAnnotationPosition(u),u}),d)),_e(d=>d?.filteredAnnotations?le(d?.filteredAnnotations||[]):le([])),_e(d=>{if(this.authService.isFeatureAllowed(je.COMMENT))return le(d);{let g=d?.filter(u=>!u?.targetAnnotations?.filter(b=>b?.type===je.COMMENT)?.length);return le(g)}})):le([])),xt(Jt))}isFeatureAllowed(e){return this.configService.getConfig$().pipe($e(t=>!!t),ue(t=>k(f({},e),{config:t})),_e(t=>this.authService.getUser$().pipe(ue(i=>k(f({},t),{user:i})))),_e(t=>Ao(t.config,t.user,je.AREA)?le(k(f({},t),{featureAllowed:!0})):(this.loggingService.warn("Area feature is not allowed."),le(k(f({},t),{featureAllowed:!1})))),xt((t,i)=>t?.featureAllowed===i?.featureAllowed))}getDataFromDocumentIds(e,t){return this.getDataFromDocuments({documentIds:e,filters:t})}getDataFromDocuments(e){if(this.configService.getApiKey()){let{documentIds:t,filters:i}=e;if(t?.some(d=>!d)||!this.documentPaths)return le([]);let a=this.docService.getDocumentPaths()?.veltFolderId,l=le([]),s={useCollectionGroup:!0,isCollection:!0,useQuery:!0};if(this.commonDbService.shouldUseFirestore()||(s.documentId=t?.length?t[0]:void 0,s.organizationId=this.documentPaths?.organizationId),this.userPermissionService?.getIsContextEnabled()){let d=[U.DEFAULT_VELT_CONTEXT,...this.docService.getProcessedDocContext()],g=[];for(let u=0;u<(d?.length??0);u+=U.LISTENER_CONTEXT_BATCH_SIZE)g.push(d?.slice(u,u+U.LISTENER_CONTEXT_BATCH_SIZE)??[]);l=pn(g.map(u=>this.commonDbService.dbListener({feature:"allAreas",properties:k(f({},s),{firestoreQuery:[_r(ft("metadata.apiKey","==",this.configService?.getApiKey()),ft("metadata.documentId","in",t),ft("metadata.organizationId","==",this.documentPaths?.organizationId),...a?[ft("metadata.veltFolderId","==",a)]:[],...u?.length?[ft("context.accessFields","array-contains-any",u)]:[])]})}).pipe(la()))).pipe(ue(u=>Ra(u)))}else{let d=[];for(let g=0;g<(t?.length??0);g+=U.LISTENER_BATCH_SIZE)d.push(t?.slice(g,g+U.LISTENER_BATCH_SIZE)??[]);l=pn(d.map(g=>this.commonDbService.dbListener({feature:"allAreas",properties:k(f({},s),{firestoreQuery:[_r(ft("metadata.apiKey","==",this.configService?.getApiKey()),ft("metadata.documentId","in",g),ft("metadata.organizationId","==",this.documentPaths?.organizationId),...a?[ft("metadata.veltFolderId","==",a)]:[])]})}).pipe(la()))).pipe(ue(g=>Ra(g)))}return l.pipe(ue(({data:d,operation:g})=>{let u=[];return d&&(u=Object.values(d??{}).filter(b=>typeof b=="object")),{data:u,operation:g}}),ue(({data:d,operation:g})=>{if(!t)return{data:d,documentMap:{},operation:g};let u=d.reduce((b,E)=>{let A=E.metadata?.documentId;return A&&(b[A]||(b[A]=[]),b[A].push(E)),b},{});return{data:d,documentMap:u,operation:g}}),ue(({data:d,documentMap:g,operation:u})=>{if(!i)if(u?.type==="removed"){if(u?.ids?.length){let b=this.areaAnnotationById$.value;u?.ids?.forEach(E=>{delete b?.[E]}),this.areaAnnotationById$.next(b)}}else Object.entries(g??{}).forEach(([b,E])=>{this.setAreaAnnotationsByOrganizationIdAndDocumentId({organizationId:this.documentPaths?.organizationId,documentId:b,annotations:E})});return d}))}else return le([])}setAreaAnnotationsByOrganizationIdAndDocumentId({organizationId:e,documentId:t,annotations:i,queryHash:a}){try{if(t){e||(e=U.NO_ORGANIZATION_ID),a||(a=U.DEFAULT_QUERY_HASH);let l={};i?.forEach(d=>{d?.annotationId&&(l[d?.annotationId]=d)});let s=f(f({},this.areaAnnotationById$.value),l);this.areaAnnotationById$.next(s)}}catch(l){this.loggingService.catch("Error in AreaService setAreaAnnotationsByOrganizationIdAndDocumentId:",l)}}getAnnotationById(e){try{return this.areaAnnotationById$.value?.[e]?this.areaAnnotationById$.value?.[e]:void 0}catch(t){this.loggingService.catch("Error in AreaService getAnnotationById: ",t);return}}filterAnnotationsByLocationIds(e,t,i){try{return e.filter(a=>t.includes(a.locationId)||i?.includes(a?.location?.id)||t?.find(l=>l==a?.location?.id)||i?.find(l=>l==a?.locationId+""))}catch(a){return this.loggingService.catch("Error in AreaService filterAnnotationsByLocations:",a),[]}}calculateAreaAnnotationPosition(e,t=!1){try{if(e.targetElements?.length){let i=e.targetElements[0],a=e.targetElements[1];if(i?.xpath&&a?.xpath||i?.anchor&&a?.anchor){let l=null,s=null;if(i?.anchor){let d=this.domService.resolveAnchorRecord(i.anchor);d?.element&&d?.element instanceof HTMLElement&&!Co(d.element)&&this.domService.isElementVisible(d.element)&&Zr(d.element)&&(l=d.element)}else i?.xpath&&(l=this.domService.getElementFromXPath(i.xpath),l&&Co(l)&&(l=null),this.domService.isXpathWithId(i.xpath)||(!l&&i.cfXpath&&(l=this.domService.getElementFromXPath(i.cfXpath),l&&Co(l)&&(l=null)),!l&&i.fXpath&&(l=this.domService.getElementFromXPath(i.fXpath),l&&Co(l)&&(l=null))));if(a?.anchor){let d=this.domService.resolveAnchorRecord(a.anchor);d?.element&&d?.element instanceof HTMLElement&&!Co(d.element)&&this.domService.isElementVisible(d.element)&&Zr(d.element)&&(s=d.element)}else a?.xpath&&(s=this.domService.getElementFromXPath(a.xpath),s&&Co(s)&&(s=null),this.domService.isXpathWithId(a.xpath)||(!s&&a.cfXpath&&(s=this.domService.getElementFromXPath(a.cfXpath),s&&Co(s)&&(s=null)),!s&&a.fXpath&&(s=this.domService.getElementFromXPath(a.fXpath),s&&Co(s)&&(s=null))));if(l&&s){let d=ZK(l,s);if(d){let g=l,u=s,b=g.getBoundingClientRect(),E=u.getBoundingClientRect(),A=t?b.width:g.offsetWidth||b.width,M=t?b.height:g.offsetHeight||b.height,V=t?E.width:u.offsetWidth||E.width,q=t?E.height:u.offsetHeight||E.height,ae={};A&&M&&(ae={top:M*i.topPercentage/100,left:A*i.leftPercentage/100});let fe={};V&&q&&(fe={top:q*a.topPercentage/100,left:V*a.leftPercentage/100});let ie=!t,Ce=JK(ae.left,ae.top,l,d,ie),xe=JK(fe.left,fe.top,s,d,ie),ke,ye,Oe,Ne,Ue={};Ce.x>xe.x?Ce.y>xe.y?(Ne={x:Ce.x,y:Ce.y},ke={x:xe.x,y:xe.y},Ue.handle1=Ne,Ue.handle2=ke):(ye={x:Ce.x,y:Ce.y},Oe={x:xe.x,y:xe.y},Ue.handle1=ye,Ue.handle2=Oe):Ce.y>xe.y?(Oe={x:Ce.x,y:Ce.y},ye={x:xe.x,y:xe.y},Ue.handle1=Oe,Ue.handle2=ye):(ke={x:Ce.x,y:Ce.y},Ne={x:xe.x,y:xe.y},Ue.handle1=ke,Ue.handle2=Ne);let ze={topLeft:ke||{x:Oe?.x,y:ye?.y},bottomRight:Ne||{x:ye?.x,y:Oe?.y},topRight:ye||{x:Ne?.x,y:ke?.y},bottomLeft:Oe||{x:ke?.x,y:Ne?.y}};return Ue.coordinates=ze,Ue.targetElement=this.domService.getXPath(d),Ue}}}}return}catch(i){this.loggingService.catch("Error in AreaService calculateAreaAnnotationPosition:",i);return}}addArea(e,t=[],i,a,l,s){this.loggingService.log("%c[WB] Calling FUNCTION: addArea","color: green;");try{let d=this.authService.getUser();if(d)if(d.isReadOnly||d.isAnonymous)this.loggingService.catch("Anonymous/Readonly users cannot add areas.");else{let g=new mL;a&&(g.annotationId=a),g.from=d,g.color=U.DEFAULT_ANNOTATION_COLOR,g.lastUpdated=this.timestamp,i&&(g.targetAnnotations=[i]),g.props=new td;let u=this.domService.getCurrentWindowSizeValue();if(g.props.screenWidth=u.screenWidth,g.props.screenHeight=u.screenHeight,g.props.screenScrollHeight=u.screenScrollHeight,g.props.viewportWidth=window.innerWidth,g.props.viewportHeight=window.innerHeight,e||t?.length>0){let A=e?this.getPointsForAreaPinAnnotation(e):t;g.targetElements=[],A.forEach(M=>{g.targetElements.push(this.domService.getTargetElementForCursorPosition(e,void 0,void 0,void 0,void 0,!0,{clientX:M.x,clientY:M.y}))})}this.setLocationToAreaAnnotation(g),l&&(g.locationId=l.locationId,g.location=l.location),g.pageInfo=to(),g.pageInfo&&(g.pageInfo.screenWidth=this.domService.getCurrentWindowSizeValue()?.screenWidth);let b=this.getElementForAreaAnnotation(g),E=this.docService.getBaseMetadata("area",{element:b});if(g?.metadata||(g.metadata={}),g.metadata=f(f({},g.metadata),E),s?.access&&s?.accessFields){if(!this.userPermissionService?.hasUserContextAccess({userId:d.userId,accessFields:s.accessFields})){this.loggingService.catch("User does not have context access to add area annotation.",void 0,void 0,!0);return}g.context={access:s.access,accessFields:s.accessFields}}return this.saveAreaToDb(g),g}return}catch(d){this.loggingService.catch("Error in AreaService addArea: ",d);return}}setLocationToAreaAnnotation(e){try{let t=this.docService.getLocation();t?(e.locationId=t.locationId,e.location=t.location):(delete e.locationId,delete e.location)}catch(t){this.loggingService.catch("Error in AreaService setLocationToAreaAnnotation:",t)}}getElementForAreaAnnotation(e){try{let t,i,a;if(e.targetElements?.length){if(e.targetElements[0]?.anchor){let l=this.domService.resolveAnchorRecord(e.targetElements[0].anchor);l?.element&&this.domService.isElementVisible(l.element)&&Zr(l.element)&&(i=l.element)}else e.targetElements[0]?.xpath&&(i=this.domService.getElementFromXPath(e.targetElements[0].xpath));if(e.targetElements[1]?.anchor){let l=this.domService.resolveAnchorRecord(e.targetElements[1].anchor);l?.element&&this.domService.isElementVisible(l.element)&&Zr(l.element)&&(a=l.element)}else e.targetElements[1]?.xpath&&(a=this.domService.getElementFromXPath(e.targetElements[1].xpath))}return i&&a&&(t=ZK(i,a)),t}catch(t){return this.loggingService.catch("Error in AreaService getElementForAreaAnnotation: ",t),null}}saveAreaToDb(e){this.loggingService.log("%c[WB] Calling FUNCTION: saveAreaToDb","color: green;");try{this.authService.getUser()&&this.authService.isFeatureAllowed(je.AREA)&&pn([this.docService.getDocumentPaths$(),this.databaseService.getDb()]).pipe($e(([t,i])=>!!t&&!!i),ut(1),_e(([t,i])=>{if(this.documentPaths=t,this.documentPaths?.area){e.annotationId||(e.annotationId=this.commonDbService.generateDocumentId()),e.pageInfo&&(e.pageInfo.areaUrl=this.generateAreaUrl(e));let a=JSON.parse(JSON.stringify(e));if(a.position=null,!a?.metadata?.documentId){a?.metadata||(a.metadata={});let d=this.docService.getBaseMetadata("area");a.metadata=f(f({},a?.metadata),d)}this.domService.toggleAnnotationSelection(a),this.analyticsService.trackEvent(K.Events.Area.AREA_ADDED,{annotationId:e.annotationId});let{documentId:l,organizationId:s}=this.getDocumentIdAndOrganizationIdFromAreaAnnotation(e);return this.commonDbService.setData({feature:"area",properties:{id:e.annotationId,documentId:l,organizationId:s},data:JSON.parse(JSON.stringify(a))})}else return le(null)})).subscribe(()=>{},t=>{this.loggingService.catch("Error in AreaService saveAreaToDb subscription: ",t)})}catch(t){this.loggingService.catch("Error in AreaService saveAreaToDb: ",t)}}getDocumentIdAndOrganizationIdFromAreaAnnotation(e){try{return{documentId:e?.metadata?.documentId,organizationId:e?.metadata?.organizationId}}catch(t){return this.loggingService.catch("Error in AreaService getDocumentIdAndOrganizationIdFromAreaAnnotation: ",t),{}}}updateArea(e,t=!1,i){try{i&&this.setLocationToAreaAnnotation(e),t&&this.updateNotificationsDatabase(e,_N.UPDATED),this.updateAreaToDb(e)}catch(a){this.loggingService.catch("Error in AreaService updateArea: ",a)}}updateAreaToDb(e){this.loggingService.log("%c[WB] Calling FUNCTION: updateAreaToDb","color: green;");try{if(this.domService.updateSelectedAnnotationInMap([e]),this.authService.getUser()&&this.authService.isFeatureAllowed(je.AREA)){let t=JSON.parse(JSON.stringify(e));if(t.position=null,!t?.metadata?.documentId){t?.metadata||(t.metadata={});let l=this.docService.getBaseMetadata("area");t.metadata=f(f({},t?.metadata),l)}let{documentId:i,organizationId:a}=this.getDocumentIdAndOrganizationIdFromAreaAnnotation(e);this.commonDbService.setData({feature:"area",properties:{id:e.annotationId,documentId:i,organizationId:a},data:JSON.parse(JSON.stringify(t))})}}catch(t){this.loggingService.catch("Error in AreaService updateAreaToDb: ",t)}}deleteAreaPinAnnotations(e){try{let t=this.domService.getSelectedAnnotationsMap(),i=this.authService.getUser(),a=[];Object.keys(t??{}).forEach(l=>Q(this,null,function*(){let s=t[l];s.type==="area"&&i&&s.from&&(i?.isAdmin||s.from.userId===i.userId)&&a.push(s)})),a?.length&&(this.analyticsService.trackEvent(K.Events.Area.AREA_DELETE_TRIGGERED,{triggerType:e,annotationId:a.map(l=>l.annotationId).join()}),this.dialog.open(xl,{panelClass:"velt-mat-dialog-container",data:{title:"Delete area?",message:"This selected area will be deleted.",yesButton:"Delete",noButton:"Cancel",variant:"area"}}).afterClosed().pipe(ut(1)).subscribe(l=>{l&&(a.forEach(s=>Q(this,null,function*(){yield this.deleteAreaPinAnnotation(s)})),setTimeout(()=>{document.querySelectorAll(`[${U.SNIPPYLY_HIGHLIGHT}]`).forEach(d=>{this.domService.removeHighlightFromElement(d)})},100))})),this.domService.resetSelectedAnnotationsMap(!0,"area")}catch(t){this.loggingService.catch("Error in AreaService deleteAreaPinAnnotations: ",t)}}getAreaAnnotationsByOrganizationIdAndDocumentId({organizationId:e,documentId:t}){try{let i={};return Object.values(this.areaAnnotationById$.value??{}).forEach(a=>{a?.metadata?.documentId==t&&a?.metadata?.organizationId==e&&(i[a?.annotationId]=a)}),Object.values(i??{})}catch(i){return this.loggingService.catch("Error in AreaService getAreaAnnotationsByOrganizationIdAndDocumentId:",i),[]}}onDeleteTargetAnnotation(e,t){try{if(this.docService.getDocumentId()&&this.areaAnnotationById$.value){let a=Object.values(this.areaAnnotationById$.value||{}),l;t?l=a.find(s=>s?.annotationId===t):l=a.find(s=>s?.targetAnnotations?.find(d=>d?.annotationId===e)),l&&(l.targetAnnotations=l.targetAnnotations?.filter(s=>s?.annotationId!==e),l.targetAnnotations?.length?this.updateAreaToDb(l):this.deleteAreaPinAnnotation(l))}}catch(i){this.loggingService.catch("Error in AreaService onDeleteTargetAnnotation: ",i)}}deleteAreaPinAnnotation(e){if(this.authService.isFeatureAllowed(je.AREA)&&this.documentPaths?.area&&e?.annotationId){this.updateNotificationsDatabase(e,_N.DELETED),this.analyticsService.trackEvent(K.Events.Area.AREA_DELETED,{annotationId:e.annotationId});let{documentId:t,organizationId:i}=this.getDocumentIdAndOrganizationIdFromAreaAnnotation(e);return this.commonDbService.deleteData({feature:"area",properties:{id:e.annotationId,documentId:t,organizationId:i}})}else return Promise.resolve()}enableArea(){try{this.areaEnabled$.next(!0)}catch(e){this.loggingService.catch("Error in AreaService enableArea: ",e)}}disableArea(){try{this.areaEnabled$.next(!1)}catch(e){this.loggingService.catch("Error in AreaService disableArea: ",e)}}getAreaEnabled$(){try{return this.areaEnabled$.asObservable()}catch(e){return this.loggingService.catch("Error in AreaService getAreaEnabled$: ",e),le(!1)}}getAreaEnabled(){try{return this.areaEnabled$.value}catch(e){return this.loggingService.catch("Error in AreaService getAreaEnabled: ",e),!1}}enableAddAreaMode(){this.authService.isFeatureAllowed(je.AREA)?(this.analyticsService.trackEvent(K.Events.Area.AREA_ADD_MODE_ENABLED),this.addAreaMode$.next(!0)):this.loggingService.catch("Error in AreaService enableAddAreaMode: ","Area feature is not enabled.")}disableAddAreaMode(){this.analyticsService.trackEvent(K.Events.Area.AREA_ADD_MODE_DISABLED),this.addAreaMode$.next(!1)}addAreaModeChange(){return this.addAreaMode$.asObservable()}getPointsForAreaPinAnnotation(e){let t=[],i=e,a=i?.touches?.length?i.touches[0]?.clientX:i.clientX,l=i?.touches?.length?i.touches[0]?.clientY:i.clientY;return t.push({x:a,y:l}),t.push({x:a+100,y:l+100}),t}get timestamp(){return this.commonDbService.getServerTimestamp()}isElementInsideAllowedElements(e){try{return this.domService.isElementInsideListedElementIds(e,this.allowedElementIds$.value)}catch(t){return this.loggingService.catch("Error in AreaService isElementInsideAllowedElements: ",t),!1}}updateNotificationsDatabase(e,t){try{let i={annotationData:e,actionType:t,notificationSource:"area"};this.notificationService.updateNotificationDatabase(i)}catch(i){this.loggingService.catch("Error in AreaService updateNotificationsDatabase: ",i)}}getAreaUrl(e){try{return e?.pageInfo?.areaUrl?e.pageInfo.areaUrl:(e?.pageInfo||(e.pageInfo=to(),e.pageInfo&&(e.pageInfo.screenWidth=this.domService.getCurrentWindowSizeValue()?.screenWidth)),e.pageInfo.areaUrl=this.generateAreaUrl(e),this.updateArea(e),e.pageInfo?.areaUrl)}catch(t){this.loggingService.catch("Error in AreaService getAreaUrl: ",t);return}}generateAreaUrl(e){let t=new URL(window.location.href);return t.searchParams.delete(U.URL_PARAMS.TAG_ID),t.searchParams.append(U.URL_PARAMS.TAG_ID,e.annotationId),t.href}generateAreaAnnotationId(){return Q(this,null,function*(){try{if(this.docService.getDocumentPaths()?.area){let t=this.commonDbService.generateDocumentId();return yield Hu(10),t||""}else return""}catch(e){return this.loggingService.catch("Error in AreaService generateAreaAnnotationId: ",e),""}})}};o.\u0275fac=function(t){return new(t||o)(X(lt),X(Ft),X(ct),X($n),X(Tn),X(We),X(Be),X(eo),X(Ln),X(Fo),X(x),X(xn),X(il))},o.\u0275prov=Me({token:o,factory:o.\u0275fac,providedIn:"root"});let n=o;return n})();var U_e=n=>{try{let o={USE_PROFILES:{svg:!0,svgFilters:!0},FORBID_ATTR:["onerror","onload","onclick","onmouseover","onmouseout","onmouseenter","onmouseleave","onmousemove","onmousedown","onmouseup","onwheel","onscroll","onkeydown","onkeyup","onkeypress","onfocus","onblur","onchange","onsubmit","on*"],FORBID_TAGS:["script","style","iframe","object","embed","form"]};return g3.sanitize(n,o)}catch(o){return at.catch("Error in File utils sanitizeSvg: ",o),""}},V_e=n=>{try{return n.name.split(".").slice(0,-1).join(".")}catch(o){at.catch("Error in File utils getFileName: ",o);return}},xQ=n=>{try{return/(?:\.([^.]+))?$/.exec(n?.name)[1]}catch(o){at.catch("Error in File utils getFileExtension: ",o);return}},B_e=(n,o)=>{try{let r=n.slice(0,-1,n.type);return new File([r],o+"."+xQ(n),{type:n.type})}catch(r){at.catch("Error in File utils updateFile: ",r);return}};var kQ={mp4:"video/mp4",mov:"video/quicktime",avi:"video/x-msvideo",wmv:"video/x-ms-wmv",flv:"video/x-flv",mp3:"audio/mpeg",wav:"audio/wav",ogg:"audio/ogg",webm:"video/webm",mkv:"video/x-matroska",m4v:"video/x-m4v",m4a:"audio/x-m4a",aac:"audio/aac","3gp":"video/3gpp","3g2":"video/3gpp2",jpg:"image/jpeg",jpeg:"image/jpeg",png:"image/png",gif:"image/gif",bmp:"image/bmp",svg:"image/svg+xml",webp:"image/webp",pdf:"application/pdf",doc:"application/msword",docx:"application/vnd.openxmlformats-officedocument.wordprocessingml.document",xls:"application/vnd.ms-excel",xlsx:"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",ppt:"application/vnd.ms-powerpoint",pptx:"application/vnd.openxmlformats-officedocument.presentationml.presentation",odt:"application/vnd.oasis.opendocument.text",ods:"application/vnd.oasis.opendocument.spreadsheet",zip:"application/zip",rar:"application/x-rar-compressed",txt:"text/plain",rtf:"application/rtf",html:"text/html",htm:"text/html",csv:"text/csv",ics:"text/calendar",vcf:"text/x-vcard",js:"application/javascript",css:"text/css",json:"application/json",xml:"application/xml",swf:"application/x-shockwave-flash"};var yp=(()=>{let o=class o{constructor(e,t,i,a,l){this.authService=e,this.configService=t,this.coreActionsService=i,this.loggingService=a,this.attachmentResolverService=l,this.storage=hw();try{this.configService.getApiKey$().subscribe(s=>{this.apiKey=s}),this.authService.getFirebaseConfig$().subscribe(s=>{if(s&&s.firebaseOptions?.storageBucket){this.storage=hw(void 0,s?.firebaseOptions?.storageBucket);let d=this.configService.getProxyConfig();d?.storageHost&&(this.storage.host=d.storageHost)}},s=>{this.loggingService.catch("Error in StorageService constructor: ",s)})}catch(s){this.loggingService.catch("Error in StorageService constructor:",s)}}createAttachment({path:e,file:t}){try{let i=new Zb;i.name=t.name;let a=B_e(t,`${i.attachmentId}_${V_e(t)}`),l=`${this.apiKey}/${e}/${a?.name}`;return i.bucketPath=l,i.size=t.size,i.type=xQ(t),i?.type&&(i.mimeType=kQ[i?.type]),i}catch(i){return this.loggingService.catch("Error in StorageService createAttachment: ",i),null}}sanitizeSvgFile(e){return Q(this,null,function*(){if(e.type===kQ.svg)try{let t=yield e.text(),i=U_e(t);return new File([i],e.name,{type:e.type})}catch(t){return this.loggingService.catch("Error in StorageService sanitizeSvgFile: ",t),e}return e})}uploadAttachmentToStorage(l){return Q(this,arguments,function*({attachment:e,file:t,resolve:i,reject:a}){try{let s=fw(this.storage,e.bucketPath),d=kY(s,t,{cacheControl:"public,max-age=3600"});d.on("state_changed",g=>{let u=g.bytesTransferred/g.totalBytes*100},g=>{a(g)},()=>{xY(d.snapshot.ref).then(g=>{e.url=g,i(e)})})}catch(s){this.loggingService.catch("Error in StorageService uploadAttachmentToStorage: ",s),a(s)}})}uploadToResolver(d){return Q(this,arguments,function*({file:e,attachment:t,metadata:i,resolve:a,reject:l,scope:s}){try{i.attachmentId=t.attachmentId;let g={attachmentId:t.attachmentId,name:t.name,file:e,metadata:i,mimeType:t.mimeType},u=ot();this.coreActionsService.triggerAction(Qe.ATTACHMENT_RESOLVER,{event:K.Events.Resolver.ATTACHMENT_SAVE_REQUEST_FORMED,timestamp:new Date().getTime(),uniqueId:u,methodName:kc.UPLOAD_TO_RESOLVER,source:"internal",payload:{attachment:g,eventType:Io.ATTACHMENT_ADD}});let b=yield this.attachmentResolverService.saveAttachment({attachment:g,eventType:Io.ATTACHMENT_ADD},u,s);b&&b.data?.url?(t.url=b.data?.url,a(t)):l(new Error("Failed to upload attachment to resolver"))}catch(g){this.loggingService.catch("Error in StorageService uploadToResolver: ",g),l(g)}})}uploadFile({path:e,file:t,useAttachmentResolver:i,metadata:a,attachmentScope:l}){return new Promise((s,d)=>Q(this,null,function*(){try{if(!this.apiKey)throw new Error("API key not configured");let g=yield this.sanitizeSvgFile(t),u=this.createAttachment({path:e,file:g});if(!u)throw new Error("Attachment not created");i?this.uploadToResolver({file:g,attachment:u,metadata:a,resolve:s,reject:d,scope:l}):this.uploadAttachmentToStorage({attachment:u,file:g,resolve:s,reject:d})}catch(g){this.loggingService.catch("Error in StorageService uploadFile:",g),d(g)}}))}uploadChunk(e,t,i,a){return new Promise((l,s)=>{try{if(a?.useAttachmentResolver){let d=this.createAttachment({path:e,file:t});if(!d){s(new Error("Attachment not created for chunk upload"));return}this.uploadToResolver({file:t,attachment:d,metadata:a.metadata,resolve:g=>l(g.url),reject:s,scope:a.attachmentScope});return}if(this.apiKey){let d=`${this.apiKey}/${e}/${t.name}`,g=fw(this.storage,d),u=kY(g,t,{cacheControl:"public,max-age=3600"});u.on("state_changed",b=>{let E=b.bytesTransferred/b.totalBytes*100},b=>{s(b)},()=>{xY(u.snapshot.ref).then(b=>{l(b)}).catch(b=>{this.loggingService.catch(`[uploadChunk] Error getting download URL for chunk ${i}:`,b),s(b)})})}else{let d=new Error("API key not available");this.loggingService.catch("[uploadChunk] API key not available",d),s(d)}}catch(d){this.loggingService.catch(`[uploadChunk] Error in StorageService uploadChunk for chunk ${i}: `,d),s(d)}})}downloadAttachment(e){try{if(e.url){let t=new XMLHttpRequest;t.responseType="blob",t.onload=()=>{let i=t.response,a=document.createElement("a"),l=window.URL.createObjectURL(i);a.setAttribute("type","hidden"),a.setAttribute(U.ATTRIBUTES.VELT_DOWNLOAD_BUTTON,"true"),a.classList.add("snippyly-overlay-panel"),a.href=l,e?.name&&(a.download=e?.name),document.body.appendChild(a);let s=new MouseEvent("click",{view:window,bubbles:!0,cancelable:!1});a.dispatchEvent(s),window.URL.revokeObjectURL(l),a.remove()},t.onerror=()=>{window.open(e.url,"_blank")},t.open("GET",e.url),t.send()}}catch(t){this.loggingService.catch("Error in StorageService downloadAttachment: ",t)}}deleteAttachment({attachment:e,metadata:t,useAttachmentResolver:i,attachmentScope:a}){return new Promise((l,s)=>{if(i){let d=ot();this.coreActionsService.triggerAction(Qe.ATTACHMENT_RESOLVER,{event:K.Events.Resolver.ATTACHMENT_DELETE_REQUEST_FORMED,timestamp:new Date().getTime(),uniqueId:d,methodName:kc.DELETE_ATTACHMENT,source:"internal",payload:{attachmentId:e.attachmentId,metadata:t}}),this.attachmentResolverService.deleteAttachment({attachmentId:e.attachmentId,metadata:t},d,a).then(()=>{l(null)}).catch(g=>{s(g)})}else{let d=fw(this.storage,e.bucketPath);yY(d).then(()=>{l(null)}).catch(g=>{l(null)})}})}deleteFileFromPath(e){return new Promise((t,i)=>{let a=fw(this.storage,e);yY(a).then(()=>{t(null)}).catch(l=>{i(l)})})}};o.\u0275fac=function(t){return new(t||o)(X(We),X(Ft),X(tr),X(x),X(Gs))},o.\u0275prov=Me({token:o,factory:o.\u0275fac,providedIn:"root"});let n=o;return n})();var go=(()=>{let o=class o{constructor(e){this.loggingService=e,this._customStatusMap=new Se(U.CommentAnnotationStatusMap),this._customPriorityMap=new Se(U.CommentAnnotationPriorityMap),this._customCategoryMap=new Se(U.CommentCategoryMap);try{let t=sessionStorage.getItem(U.SESSION_STORAGE.VELT_CUSTOM_PRIORITY_MAP);t&&this._customPriorityMap.next(JSON.parse(t));let i=sessionStorage.getItem(U.SESSION_STORAGE.VELT_CUSTOM_STATUS_MAP);i&&this._customStatusMap.next(JSON.parse(i));let a=sessionStorage.getItem(U.SESSION_STORAGE.VELT_CUSTOM_CATEGORY_MAP);a&&this._customCategoryMap.next(JSON.parse(a))}catch(t){this.loggingService.catch("Error in CustomFilterService constructor: ",t)}}setCustomStatusFilters(e){try{if(e.length<2){this._customStatusMap.next(U.CommentAnnotationStatusMap),sessionStorage.setItem(U.SESSION_STORAGE.VELT_CUSTOM_STATUS_MAP,JSON.stringify(U.CommentAnnotationStatusMap)),this.loggingService.catch("Custom status filters must have at least 2 filters");return}let t={};e.forEach(i=>{t[i.id]=i,i.type||(i.type="ongoing")}),this._customStatusMap.next(t),sessionStorage.setItem(U.SESSION_STORAGE.VELT_CUSTOM_STATUS_MAP,JSON.stringify(t))}catch(t){this.loggingService.catch("Error in CustomFilterService setCustomStatusFilters: ",t)}}setCustomPriorityFilters(e){try{if(e.length<2){this._customPriorityMap.next(U.CommentAnnotationPriorityMap),sessionStorage.setItem(U.SESSION_STORAGE.VELT_CUSTOM_PRIORITY_MAP,JSON.stringify(U.CommentAnnotationPriorityMap)),this.loggingService.catch("Custom priority filters must have at least 2 filters");return}let t={};e.forEach(i=>{t[i.id]=i}),this._customPriorityMap.next(t),sessionStorage.setItem(U.SESSION_STORAGE.VELT_CUSTOM_PRIORITY_MAP,JSON.stringify(t))}catch(t){this.loggingService.catch("Error in CustomFilterService setCustomPriorityFilters: ",t)}}setCustomCategories(e){try{let t={};e.forEach(i=>{t[i.id]=i}),this._customCategoryMap.next(t),sessionStorage.setItem(U.SESSION_STORAGE.VELT_CUSTOM_CATEGORY_MAP,JSON.stringify(t))}catch(t){this.loggingService.catch("Error in CustomFilterService setCustomCategories: ",t)}}get customStatusMap$(){return this._customStatusMap.asObservable()}get customPriorityMap$(){return this._customPriorityMap.asObservable()}get customCategoryMap$(){return this._customCategoryMap.asObservable()}get defaultStatus(){try{let t=Object.entries(this._customStatusMap.value).find(([i,a])=>a.type==="default");if(t)return t[1]}catch(e){this.loggingService.catch("Error in CustomFilterService defaultStatus: ",e)}return U.CommentAnnotationStatusMap.OPEN}get resolvedStatus(){try{let t=Object.entries(this._customStatusMap.value).find(([i,a])=>a.type==="terminal");if(t)return t[1]}catch(e){this.loggingService.catch("Error in CustomFilterService resolvedStatus: ",e)}return U.CommentAnnotationStatusMap.OPEN}get ongoingStatuses(){try{let t=Object.entries(this._customStatusMap.value).filter(([i,a])=>a.type==="ongoing");if(t)return t.map(i=>i[1])}catch(e){this.loggingService.catch("Error in CustomFilterService ongoingStatuses: ",e)}return[U.CommentAnnotationStatusMap.IN_PROGRESS]}convertLegacyAnnotationStatus(e){try{if(typeof e.status=="string"||e.status===void 0){let t=Object.entries(this._customStatusMap.value),i=t.find(([a,l])=>l.type==="default");switch(e.status){case"open":i&&(e.status=i[1]);break;case"inProgress":let a=t.find(([s,d])=>d.type==="ongoing");a&&(e.status=a[1]);break;case"resolved":let l=t.find(([s,d])=>d.type==="terminal");l&&(e.status=l[1]);break;default:i&&(e.status=i[1]);break}}return e}catch(t){return this.loggingService.catch("Error in CustomFilterService convertLegacyAnnotation: ",t),e}}convertLegacyPriority(e){try{typeof e.priority=="string"&&(e.priority=U.CommentAnnotationPriorityMap[e.priority])}catch(t){this.loggingService.catch("Error in CustomFilterService convertLegacyPriority: ",t)}return e}convertLegacyCategory(e){try{if(e.commentCategories===void 0||e.commentCategories===null||!Array.isArray(e.commentCategories)||e.commentCategories.length===0)return e;typeof e.commentCategories[0]=="string"&&(e.commentCategories=e.commentCategories.map(t=>U.CommentCategoryMap[t]))}catch(t){this.loggingService.catch("Error in CustomFilterService convertLegacyCategory: ",t)}return e}};o.\u0275fac=function(t){return new(t||o)(X(x))},o.\u0275prov=Me({token:o,factory:o.\u0275fac,providedIn:"root"});let n=o;return n})();var j_e=(()=>{let o=class o{constructor(e,t){this.domService=e,this.loggingService=t,this.keyEventSubject$=new it;try{this.loggingService.log("%c[WB] Creating CLASS: HotkeyService","color: blue;"),this.keyEvent$=this.keyEventSubject$.asObservable().pipe(Vh()),this.domService.onWindowKeydown$().subscribe(i=>{this.keyEventSubject$.next(i)})}catch(i){this.loggingService.catch("Error in HotkeyService constructor: ",i)}}getKeyPressEvent(e,t={}){try{return this.loggingService.log("%c[WB] Calling FUNCTION: getKeyPressEvent","color: green;"),this.keyEvent$.pipe($e(i=>i?.key===e),$e(i=>!(!!t?.includeCtrl!==i.ctrlKey||!!t?.includeAlt!==i.altKey||!!t?.includeShift!==i.shiftKey||!!t?.includeMeta!==i.metaKey)),$e(()=>this.isNoInputFocused()))}catch(i){return this.loggingService.catch("Error in HotkeyService getKeyPressEvent: ",i),new Gt}}isNoInputFocused(){try{let e=document.activeElement;for(;e&&e?.tagName!=="BODY";){if(e.tagName==="INPUT"||e.tagName==="TEXTAREA"||e?.isContentEditable)return!1;e=e?.parentElement}return!0}catch(e){return this.loggingService.catch("Error in HotkeyService isNoInputFocused: ",e),!1}}};o.\u0275fac=function(t){return new(t||o)(X(Be),X(x))},o.\u0275prov=Me({token:o,factory:o.\u0275fac,providedIn:"root"});let n=o;return n})();function HWe(n,o){n&1&&(de(),h(0,"svg",16),D(1,"rect",17)(2,"path",18)(3,"path",19)(4,"rect",20)(5,"path",21),S())}function GWe(n,o){n&1&&(de(),h(0,"svg",16),D(1,"rect",22)(2,"path",23)(3,"path",19)(4,"rect",20)(5,"path",21),S())}function zWe(n,o){if(n&1&&(C(0),h(1,"div",6)(2,"div",7),p(3,HWe,6,0,"svg",8)(4,GWe,6,0,"ng-template",null,1,Ve),S(),h(6,"div",9),ne(7),R(8,"translate"),D(9,"br"),ne(10),R(11,"translate"),S(),h(12,"div",10)(13,"p"),ne(14),R(15,"translate"),de(),h(16,"svg",11),D(17,"path",12)(18,"path",13)(19,"path",14)(20,"path",15),S(),ne(21),R(22,"translate"),S(),St(),h(23,"p"),ne(24),R(25,"translate"),S()()(),_()),n&2){let r=Ie(5),e=c();m(3),v("ngIf",e.darkMode)("ngIfElse",r),m(4),Ee(" ",N(8,7,"Allow mic permission to")),m(3),Ee("",N(11,9,"enable your audio")," "),m(4),Ee(" ",N(15,11,"1. Click the")," "),m(7),Ee(" ",N(22,13,"page info icon in your browser\u2019s address bar")," "),m(3),Ee(" ",N(25,15,"2. Turn on Microphone")," ")}}function WWe(n,o){n&1&&(de(),h(0,"svg",16),D(1,"rect",17)(2,"path",24)(3,"path",19)(4,"rect",20)(5,"path",21),S())}function qWe(n,o){n&1&&(de(),h(0,"svg",16),D(1,"rect",22)(2,"path",25)(3,"path",19)(4,"rect",20)(5,"path",21),S())}function YWe(n,o){if(n&1&&(C(0),h(1,"div",6)(2,"div",7),p(3,WWe,6,0,"svg",8)(4,qWe,6,0,"ng-template",null,2,Ve),S(),h(6,"div",9),ne(7),R(8,"translate"),D(9,"br"),ne(10),R(11,"translate"),S(),h(12,"div",10)(13,"p"),ne(14),R(15,"translate"),de(),h(16,"svg",11),D(17,"path",12)(18,"path",13)(19,"path",14)(20,"path",15),S(),ne(21),R(22,"translate"),S(),St(),h(23,"p"),ne(24),R(25,"translate"),S()()(),_()),n&2){let r=Ie(5),e=c();m(3),v("ngIf",e.darkMode)("ngIfElse",r),m(4),Ee(" ",N(8,7,"Allow camera permission")),m(3),Ee("",N(11,9,"to enable your video")," "),m(4),Ee(" ",N(15,11,"1. Click the")," "),m(7),Ee(" ",N(22,13,"page info icon in your browser\u2019s address bar")," "),m(3),Ee(" ",N(25,15,"2. Turn on Camera")," ")}}var jL=(()=>{let o=class o{constructor(e,t,i,a,l){this.loggingService=e,this.themeService=t,this.elementRef=i,this.matDialogRef=a,this.data=l,this.veltElement=!0,this.darkMode=!0;try{this.loggingService.log("%c[WB] Creating CLASS: DevicePermissionDeniedDialogComponent","color: blue;"),this.type=this.data?.type,[!0,!1].includes(this.data?.darkMode)&&(this.darkMode=this.data?.darkMode)}catch(s){this.loggingService.catch("Error in DevicePermissionDeniedDialogComponent constructor: ",s)}}ngOnDestroy(){}};o.\u0275fac=function(t){return new(t||o)(y(x),y(_t),y(Z),y(Vi,8),y(Yc,8))},o.\u0275cmp=O({type:o,selectors:[["velt-device-permission-denied-dialog-internal"]],hostVars:1,hostBindings:function(t,i){t&2&&T("data-velt-element",i.veltElement)},inputs:{type:"type"},standalone:!1,decls:5,vars:5,consts:[["devicePermissionDialogRef",""],["defaultAudioIcon",""],["defaultVideoIcon",""],[1,"velt-device-permission-denied-dialog--container",3,"snippylyOverlay","snippylyOverlayZIndex"],[3,"ngSwitch"],[4,"ngSwitchCase"],[1,"velt-device-permission-denied-dialog"],[1,"velt-device-permission-denied-dialog--icon"],["width","61","height","60","viewBox","0 0 61 60","fill","none","xmlns","http://www.w3.org/2000/svg",4,"ngIf","ngIfElse"],[1,"velt-device-permission-denied-dialog--header"],[1,"velt-device-permission-denied-dialog--content"],["width","13","height","12","viewBox","0 0 13 12","fill","none","xmlns","http://www.w3.org/2000/svg",1,"velt-device-permission-denied-dialog--page-info-icon"],["d","M4.375 2.5C4.375 3.53553 3.53553 4.375 2.5 4.375C1.46447 4.375 0.625 3.53553 0.625 2.5C0.625 1.46447 1.46447 0.625 2.5 0.625C3.53553 0.625 4.375 1.46447 4.375 2.5Z","stroke","currentColor","stroke-opacity","0.6","stroke-width","1.25"],["d","M5 2.5H12.5","stroke","currentColor","stroke-opacity","0.6","stroke-width","1.25"],["d","M0 8.75H7.5","stroke","currentColor","stroke-opacity","0.6","stroke-width","1.25"],["d","M11.875 8.75C11.875 9.78553 11.0355 10.625 10 10.625C8.96447 10.625 8.125 9.78553 8.125 8.75C8.125 7.71447 8.96447 6.875 10 6.875C11.0355 6.875 11.875 7.71447 11.875 8.75Z","stroke","currentColor","stroke-opacity","0.6","stroke-width","1.25"],["width","61","height","60","viewBox","0 0 61 60","fill","none","xmlns","http://www.w3.org/2000/svg"],["x","0.5","y","4","width","56","height","56","rx","28","fill","white","fill-opacity","0.04"],["d","M23.5026 20.333C23.5026 19.0069 24.0294 17.7352 24.9671 16.7975C25.9048 15.8598 27.1765 15.333 28.5026 15.333C29.8287 15.333 31.1005 15.8598 32.0381 16.7975C32.9758 17.7352 33.5026 19.0069 33.5026 20.333V28.6663C33.5027 29.1599 33.4297 29.6508 33.2859 30.123M29.9526 33.4563C29.2054 33.6828 28.4155 33.7311 27.6463 33.5973C26.8771 33.4636 26.1499 33.1516 25.5229 32.6863C24.8959 32.2211 24.3866 31.6154 24.0358 30.9179C23.685 30.2204 23.5024 29.4504 23.5026 28.6697V27.003M16.8359 28.6663C16.8356 30.7719 17.405 32.8383 18.484 34.6465C19.5629 36.4546 21.111 37.9371 22.9642 38.9366C24.8174 39.9362 26.9066 40.4156 29.0102 40.324C31.1137 40.2324 33.1533 39.5732 34.9126 38.4163M38.2459 35.083C39.5023 33.1791 40.1701 30.9474 40.1659 28.6663M21.8359 46.9997H35.1693M28.5026 40.333V46.9997","stroke","white","stroke-opacity","0.52","stroke-width","2.5","stroke-linecap","round","stroke-linejoin","round"],["d","M13.5 17L43.5 47","stroke","currentColor","stroke-width","2.5","stroke-linecap","round","stroke-linejoin","round"],["x","36.5","width","24","height","24","rx","12","fill","currentColor"],["d","M48.5 18.99V19M48.5 14V5","stroke","white","stroke-width","2.5","stroke-linecap","round","stroke-linejoin","round"],["x","0.5","y","4","width","56","height","56","rx","28","fill","black","fill-opacity","0.04"],["d","M23.5026 20.333C23.5026 19.0069 24.0294 17.7352 24.9671 16.7975C25.9048 15.8598 27.1765 15.333 28.5026 15.333C29.8287 15.333 31.1005 15.8598 32.0381 16.7975C32.9758 17.7352 33.5026 19.0069 33.5026 20.333V28.6663C33.5027 29.1599 33.4297 29.6508 33.2859 30.123M29.9526 33.4563C29.2054 33.6828 28.4155 33.7311 27.6463 33.5973C26.8771 33.4636 26.1499 33.1516 25.5229 32.6863C24.8959 32.2211 24.3866 31.6154 24.0358 30.9179C23.685 30.2204 23.5024 29.4504 23.5026 28.6697V27.003M16.8359 28.6663C16.8356 30.7719 17.405 32.8383 18.484 34.6465C19.5629 36.4546 21.111 37.9371 22.9642 38.9366C24.8174 39.9362 26.9066 40.4156 29.0102 40.324C31.1137 40.2324 33.1533 39.5732 34.9126 38.4163M38.2459 35.083C39.5023 33.1791 40.1701 30.9474 40.1659 28.6663M21.8359 46.9997H35.1693M28.5026 40.333V46.9997","stroke","black","stroke-opacity","0.52","stroke-width","2.5","stroke-linecap","round","stroke-linejoin","round"],["d","M42.375 39.2135C42.7034 39.1007 42.9883 38.8881 43.19 38.6054C43.3917 38.3227 43.5001 37.9841 43.5 37.6369V26.3635C43.4998 26.0795 43.4271 25.8003 43.2888 25.5523C43.1504 25.3043 42.9509 25.0958 42.7093 24.9465C42.4677 24.7973 42.192 24.7122 41.9083 24.6994C41.6246 24.6867 41.3424 24.7466 41.0883 24.8735L33.5 28.6669V30.3335V25.3333C33.5 24.4493 33.1488 23.6014 32.5237 22.9763C31.8986 22.3512 31.0507 22 30.1667 22H25.1667M33.5 37V38.6667C33.5 39.5507 33.1488 40.3986 32.5237 41.0237C31.8986 41.6488 31.0507 42 30.1667 42H16.8333C15.9493 42 15.1014 41.6488 14.4763 41.0237C13.8512 40.3986 13.5 39.5507 13.5 38.6667V25.3333C13.5 24.4493 13.8512 23.6014 14.4763 22.9763C15.1014 22.3512 15.9493 22 16.8333 22H18.5","stroke","white","stroke-opacity","0.52","stroke-width","2.5","stroke-linecap","round","stroke-linejoin","round"],["d","M42.375 39.2135C42.7034 39.1007 42.9883 38.8881 43.19 38.6054C43.3917 38.3227 43.5001 37.9841 43.5 37.6369V26.3635C43.4998 26.0795 43.4271 25.8003 43.2888 25.5523C43.1504 25.3043 42.9509 25.0958 42.7093 24.9465C42.4677 24.7973 42.192 24.7122 41.9083 24.6994C41.6246 24.6867 41.3424 24.7466 41.0883 24.8735L33.5 28.6669V30.3335V25.3333C33.5 24.4493 33.1488 23.6014 32.5237 22.9763C31.8986 22.3512 31.0507 22 30.1667 22H25.1667M33.5 37V38.6667C33.5 39.5507 33.1488 40.3986 32.5237 41.0237C31.8986 41.6488 31.0507 42 30.1667 42H16.8333C15.9493 42 15.1014 41.6488 14.4763 41.0237C13.8512 40.3986 13.5 39.5507 13.5 38.6667V25.3333C13.5 24.4493 13.8512 23.6014 14.4763 22.9763C15.1014 22.3512 15.9493 22 16.8333 22H18.5","stroke","currentColor","stroke-opacity","0.52","stroke-width","2.5","stroke-linecap","round","stroke-linejoin","round"]],template:function(t,i){if(t&1&&(h(0,"div",3,0),C(2,4),p(3,zWe,26,17,"ng-container",5)(4,YWe,26,17,"ng-container",5),_(),S()),t&2){let a=Ie(1);v("snippylyOverlay",a)("snippylyOverlayZIndex",3e3),m(2),v("ngSwitch",i.type),m(),v("ngSwitchCase","audio"),m(),v("ngSwitchCase","video")}},styles:["html[_ngcontent-%COMP%]{--velt-base-rem-unit: 1}*[data-snippyly-element=true][_ngcontent-%COMP%], *[data-velt-element=true][_ngcontent-%COMP%]{font-family:var(--velt-default-font-family)}velt-wireframe[_ngcontent-%COMP%]{display:none!important}[_nghost-%COMP%]{--velt-green: var(--velt-light-mode-green);--velt-magenta: var(--velt-light-mode-magenta);--velt-amber: var(--velt-light-mode-amber);--velt-purple: var(--velt-light-mode-purple);--velt-cyan: var(--velt-light-mode-cyan);--velt-orange: var(--velt-light-mode-orange);--velt-black: var(--velt-light-mode-black);--velt-white: var(--velt-light-mode-white);--velt-gray: var(--velt-light-mode-gray);--velt-error: var(--velt-light-mode-error);--velt-error-hover: var(--velt-light-mode-error-hover);--velt-error-foreground: var(--velt-light-mode-error-foreground);--velt-error-light: var(--velt-light-mode-error-light);--velt-error-transparent: var(--velt-light-mode-error-transparent);--velt-warning: var(--velt-light-mode-warning);--velt-warning-hover: var(--velt-light-mode-warning-hover);--velt-warning-foreground: var(--velt-light-mode-warning-foreground);--velt-warning-light: var(--velt-light-mode-warning-light);--velt-warning-transparent: var(--velt-light-mode-warning-transparent);--velt-success: var(--velt-light-mode-success);--velt-success-hover: var(--velt-light-mode-success-hover);--velt-success-foreground: var(--velt-light-mode-success-foreground);--velt-success-light: var(--velt-light-mode-success-light);--velt-success-transparent: var(--velt-light-mode-success-transparent);--velt-accent: var(--velt-light-mode-accent);--velt-accent-text: var(--velt-light-mode-accent-text);--velt-accent-hover: var(--velt-light-mode-accent-hover);--velt-accent-foreground: var(--velt-light-mode-accent-foreground);--velt-accent-light: var(--velt-light-mode-accent-light);--velt-accent-transparent: var(--velt-light-mode-accent-transparent);--velt-text-0: var(--velt-light-mode-text-0);--velt-text-1: var(--velt-light-mode-text-1);--velt-text-2: var(--velt-light-mode-text-2);--velt-text-3: var(--velt-light-mode-text-3);--velt-text-4: var(--velt-light-mode-text-4);--velt-text-5: var(--velt-light-mode-text-5);--velt-text-6: var(--velt-light-mode-text-6);--velt-text-7: var(--velt-light-mode-text-7);--velt-text-8: var(--velt-light-mode-text-8);--velt-text-9: var(--velt-light-mode-text-9);--velt-text-10: var(--velt-light-mode-text-10);--velt-text-11: var(--velt-light-mode-text-11);--velt-text-12: var(--velt-light-mode-text-12);--velt-background-0: var(--velt-light-mode-background-0);--velt-background-1: var(--velt-light-mode-background-1);--velt-background-2: var(--velt-light-mode-background-2);--velt-background-3: var(--velt-light-mode-background-3);--velt-background-4: var(--velt-light-mode-background-4);--velt-background-5: var(--velt-light-mode-background-5);--velt-background-6: var(--velt-light-mode-background-6);--velt-background-7: var(--velt-light-mode-background-7);--velt-background-8: var(--velt-light-mode-background-8);--velt-background-9: var(--velt-light-mode-background-9);--velt-background-10: var(--velt-light-mode-background-10);--velt-border-0: var(--velt-light-mode-border-0);--velt-border-1: var(--velt-light-mode-border-1);--velt-border-2: var(--velt-light-mode-border-2);--velt-border-3: var(--velt-light-mode-border-3);--velt-border-4: var(--velt-light-mode-border-4);--velt-border-5: var(--velt-light-mode-border-5);--velt-border-6: var(--velt-light-mode-border-6);--velt-border-7: var(--velt-light-mode-border-7);--velt-border-8: var(--velt-light-mode-border-8);--velt-border-9: var(--velt-light-mode-border-9);--velt-border-10: var(--velt-light-mode-border-10);--velt-background-transparent: var(--velt-light-mode-background-transparent);--velt-border-transparent: var(--velt-light-mode-border-transparent);--velt-animation-transparent: var(--velt-light-mode-animation-transparent)}[dark][_nghost-%COMP%]{--velt-green: var(--velt-dark-mode-green);--velt-magenta: var(--velt-dark-mode-magenta);--velt-amber: var(--velt-dark-mode-amber);--velt-purple: var(--velt-dark-mode-purple);--velt-cyan: var(--velt-dark-mode-cyan);--velt-orange: var(--velt-dark-mode-orange);--velt-black: var(--velt-dark-mode-black);--velt-white: var(--velt-dark-mode-white);--velt-gray: var(--velt-dark-mode-gray);--velt-error: var(--velt-dark-mode-error);--velt-error-hover: var(--velt-dark-mode-error-hover);--velt-error-foreground: var(--velt-dark-mode-error-foreground);--velt-error-light: var(--velt-dark-mode-error-light);--velt-error-transparent: var(--velt-dark-mode-error-transparent);--velt-warning: var(--velt-dark-mode-warning);--velt-warning-hover: var(--velt-dark-mode-warning-hover);--velt-warning-foreground: var(--velt-dark-mode-warning-foreground);--velt-warning-light: var(--velt-dark-mode-warning-light);--velt-warning-transparent: var(--velt-dark-mode-warning-transparent);--velt-success: var(--velt-dark-mode-success);--velt-success-hover: var(--velt-dark-mode-success-hover);--velt-success-foreground: var(--velt-dark-mode-success-foreground);--velt-success-light: var(--velt-dark-mode-success-light);--velt-success-transparent: var(--velt-dark-mode-success-transparent);--velt-accent: var(--velt-dark-mode-accent);--velt-accent-text: var(--velt-dark-mode-accent-text);--velt-accent-hover: var(--velt-dark-mode-accent-hover);--velt-accent-foreground: var(--velt-dark-mode-accent-foreground);--velt-accent-light: var(--velt-dark-mode-accent-light);--velt-accent-transparent: var(--velt-dark-mode-accent-transparent);--velt-text-0: var(--velt-dark-mode-text-0);--velt-text-1: var(--velt-dark-mode-text-1);--velt-text-2: var(--velt-dark-mode-text-2);--velt-text-3: var(--velt-dark-mode-text-3);--velt-text-4: var(--velt-dark-mode-text-4);--velt-text-5: var(--velt-dark-mode-text-5);--velt-text-6: var(--velt-dark-mode-text-6);--velt-text-7: var(--velt-dark-mode-text-7);--velt-text-8: var(--velt-dark-mode-text-8);--velt-text-9: var(--velt-dark-mode-text-9);--velt-text-10: var(--velt-dark-mode-text-10);--velt-text-11: var(--velt-dark-mode-text-11);--velt-text-12: var(--velt-dark-mode-text-12);--velt-background-0: var(--velt-dark-mode-background-0);--velt-background-1: var(--velt-dark-mode-background-1);--velt-background-2: var(--velt-dark-mode-background-2);--velt-background-3: var(--velt-dark-mode-background-3);--velt-background-4: var(--velt-dark-mode-background-4);--velt-background-5: var(--velt-dark-mode-background-5);--velt-background-6: var(--velt-dark-mode-background-6);--velt-background-7: var(--velt-dark-mode-background-7);--velt-background-8: var(--velt-dark-mode-background-8);--velt-background-9: var(--velt-dark-mode-background-9);--velt-background-10: var(--velt-dark-mode-background-10);--velt-border-0: var(--velt-dark-mode-border-0);--velt-border-1: var(--velt-dark-mode-border-1);--velt-border-2: var(--velt-dark-mode-border-2);--velt-border-3: var(--velt-dark-mode-border-3);--velt-border-4: var(--velt-dark-mode-border-4);--velt-border-5: var(--velt-dark-mode-border-5);--velt-border-6: var(--velt-dark-mode-border-6);--velt-border-7: var(--velt-dark-mode-border-7);--velt-border-8: var(--velt-dark-mode-border-8);--velt-border-9: var(--velt-dark-mode-border-9);--velt-border-10: var(--velt-dark-mode-border-10);--velt-background-transparent: var(--velt-dark-mode-background-transparent);--velt-border-transparent: var(--velt-dark-mode-border-transparent);--velt-animation-transparent: var(--velt-dark-mode-animation-transparent)} .velt-mat-dialog-container.velt-device-permission-denied-dialog--panel mat-dialog-container .mat-mdc-dialog-surface.mdc-dialog__surface{padding:0;background-color:transparent;box-shadow:none;overflow:unset}.velt-device-permission-denied-dialog[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:var(--velt-spacing-lg);align-items:center;justify-content:center;padding:4rem;box-sizing:border-box;word-break:break-word;max-width:600px;max-height:400px;text-align:center;background-color:var(--velt-background-0);border-radius:var(--velt-border-radius-2xl);box-shadow:0 calc((4rem + 0px) * var(--velt-base-rem-unit)) calc((4rem + 0px) * var(--velt-base-rem-unit)) calc((-3rem + 0px) * var(--velt-base-rem-unit)) #1f2f461f}.velt-device-permission-denied-dialog[_ngcontent-%COMP%] .velt-device-permission-denied-dialog--icon[_ngcontent-%COMP%]{color:var(--velt-error)}.velt-device-permission-denied-dialog[_ngcontent-%COMP%] .velt-device-permission-denied-dialog--header[_ngcontent-%COMP%]{font-size:var(--velt-font-size-lg);font-weight:600;line-height:36px;letter-spacing:-.02em;text-align:center;color:var(--velt-text-0)}.velt-device-permission-denied-dialog[_ngcontent-%COMP%] .velt-device-permission-denied-dialog--content[_ngcontent-%COMP%]{font-size:var(--velt-font-size-sm);font-weight:400;line-height:21px;text-align:center;color:var(--velt-text-0)}.velt-device-permission-denied-dialog[_ngcontent-%COMP%] .velt-device-permission-denied-dialog--content[_ngcontent-%COMP%] .velt-device-permission-denied-dialog--page-info-icon[_ngcontent-%COMP%]{margin-left:var(--velt-spacing-sm);margin-right:var(--velt-spacing-sm);color:var(--velt-error)}"],changeDetection:0});let n=o;return n})();var gv=(()=>{let o=class o{constructor(e,t){this.loggingService=e,this.matDialog=t,this.audioPermissionState$=new Se(null),this.videoPermissionState$=new Se(null);try{this.loggingService.log("%c[WB] Creating CLASS: DevicePermissionService","color: blue;"),this.checkPermissions()}catch(i){this.loggingService.catch("Error in DevicePermissionService constructor: ",i)}}checkPermissions(){try{this.loggingService.log("%c[WB] Calling DevicePermissionService FUNCTION: checkPermissions","color: green;"),new ur().browserName!=="Firefox"&&(navigator.permissions.query({name:"microphone"}).then(t=>{this.audioPermissionState$.next(t.state),t.onchange=()=>{this.audioPermissionState$.next(t.state)}}).catch(t=>{}),navigator.permissions.query({name:"camera"}).then(t=>{this.videoPermissionState$.next(t.state),t.onchange=()=>{this.videoPermissionState$.next(t.state)}}).catch(t=>{}))}catch(e){this.loggingService.catch("Error in DevicePermissionService checkPermissions: ",e)}}getPermissionState$(e){try{switch(this.loggingService.log("%c[WB] Calling DevicePermissionService FUNCTION: getPermissionState$","color: green;"),e){case"audio":return this.getAudioPermissionState$();case"video":return this.getVideoPermissionState$();default:return le(null)}}catch(t){return this.loggingService.catch("Error in DevicePermissionService getPermissionState$: ",t),le(null)}}getAudioPermissionState$(){return this.audioPermissionState$.asObservable()}getVideoPermissionState$(){return this.videoPermissionState$.asObservable()}openDevicePermissionDeniedDialog(e,t){try{this.loggingService.log("%c[WB] Calling DevicePermissionService FUNCTION: openDevicePermissionDeniedDialog","color: green;"),this.matDialog.open(jL,{panelClass:["velt-device-permission-denied-dialog--panel","velt-mat-dialog-container"],backdropClass:["velt-device-permission-denied-dialog--backdrop","s-background-blur-1"],data:f({type:e},t||{})})}catch(i){this.loggingService.catch("Error in DevicePermissionService openDevicePermissionDeniedDialog: ",i)}}};o.\u0275fac=function(t){return new(t||o)(X(x),X(Fo))},o.\u0275prov=Me({token:o,factory:o.\u0275fac,providedIn:"root"});let n=o;return n})();var KWe=()=>["video","screen"];function ZWe(n,o){if(n&1&&D(0,"app-recording-preview-steps-dialog-video",4),n&2){let r=c(2);v("componentConfigSignal",r.componentConfigSignal)}}function JWe(n,o){if(n&1&&D(0,"app-recording-preview-steps-dialog-audio",4),n&2){let r=c(2);v("componentConfigSignal",r.componentConfigSignal)}}function XWe(n,o){if(n&1&&(C(0),h(1,"div",2,0),p(3,ZWe,1,1,"app-recording-preview-steps-dialog-video",3)(4,JWe,1,1,"app-recording-preview-steps-dialog-audio",3),S(),_()),n&2){let r=o.ngIf,e=Ie(2),t=c();m(),v("snippylyOverlay",e)("snippylyOverlayZIndex",2e3),T("aria-label","Recording preview - "+r.type+" mode")("data-testid",t.componentId),m(2),v("ngIf",Et(6,KWe).includes(r.type)),m(),v("ngIf",r.type==="audio")}}var $L=(()=>{let o=class o{constructor(e,t,i,a,l,s,d){this.loggingService=e,this.recorderService=t,this.dialog=i,this.devicePermissionService=a,this.dialogRef=l,this.elementRef=s,this.data=d,this.darkMode=!1,this.shadowDom=!0,this.startCountdownFrom=3,this.defaultMediaSourceOptions=Qd(),this.recordingCountdownEnabled=!1,this.subscriptions=[],this.veltElement=!0,this.componentId="velt-recording-preview-steps-dialog",this.componentConfigSignal=Ae({closeDialog:this.closeDialog.bind(this),startCountdown:this.startCountdown.bind(this),toggleAudio:this.toggleAudio.bind(this),toggleVideo:this.toggleVideo.bind(this),toggleSettings:this.toggleSettings.bind(this),cancelCountdown:this.cancelCountdown.bind(this),updateMediaConfig:this.updateMediaConfig.bind(this),handleOverlayClick:this.handleOverlayClick.bind(this),countdownStarted:!1,mediaConfig:{audio:{enabled:!1},video:{enabled:!1}},mediaState:{audio:{enabled:!1},video:{enabled:!1}},type:"video",countdown:this.startCountdownFrom,mediaStream:void 0,isSettingsOpen:!1,darkMode:this.darkMode,shadowDom:this.shadowDom,isExplicitShadowDom:!1});try{this.devicePermissionService.getPermissionState$("video").subscribe(g=>{this.componentConfigSignal.update(u=>(u=k(f({},u),{mediaState:k(f({},u.mediaState),{video:{enabled:g!=="denied"}})}),u))}),this.devicePermissionService.getPermissionState$("audio").subscribe(g=>{this.componentConfigSignal.update(u=>(u=k(f({},u),{mediaState:k(f({},u.mediaState),{audio:{enabled:g!=="denied"}})}),u))}),this.subscriptions.push(this.recorderService.getRecordingCountdownEnabled$().subscribe(g=>{this.recordingCountdownEnabled=g})),this.subscriptions.push(this.recorderService.getRecordingMicEnabled$().subscribe(g=>{g!==null&&(g?this.toggleAudioOn():this.toggleAudioOff())})),d&&(d.type&&this.componentConfigSignal.update(g=>(g=k(f({},g),{type:d.type}),g)),d.recordingCountdown!==void 0&&(this.recordingCountdownEnabled=!!d.recordingCountdown),d.mediaConfig&&(d.mediaConfig?.audio?.enabled&&!d.mediaConfig?.audio?.deviceId&&(d.mediaConfig.audio.deviceId=this.defaultMediaSourceOptions?.selectedAudioDevice?.deviceId),d.mediaConfig?.video?.enabled&&!d.mediaConfig?.video?.deviceId&&(d.mediaConfig.video.deviceId=this.defaultMediaSourceOptions?.selectedVideoDevice?.deviceId),d?.darkMode?this.elementRef.nativeElement.setAttribute("dark",""):this.elementRef.nativeElement.removeAttribute("dark"),this.componentConfigSignal.update(g=>(g=k(f({},g),{shadowDom:d?.shadowDom!==!1,isExplicitShadowDom:!!d?.isExplicitShadowDom,darkMode:d.darkMode||!1}),g)),this.updateMediaConfig(d.mediaConfig)))}catch(g){this.loggingService.catch("Error in RecordingPreviewStepsDialogComponent constructor: ",g)}}ngOnInit(){try{this.setupA11yAttributes(),this.componentConfigSignal().type==="screen"&&this.subscriptions.push(this.recorderService.getScreenStream$().subscribe(e=>{e&&e.active&&e.getVideoTracks().some(t=>t.readyState==="live")&&this.componentConfigSignal.update(t=>(t=f({},t),t.mediaConfig.screen={enabled:!0,stream:e},t))}))}catch(e){this.loggingService.catch("Error in RecordingPreviewStepsDialogComponent ngOnInit:",e)}}setupA11yAttributes(){try{let e=this.elementRef.nativeElement;e.setAttribute("data-testid",this.componentId+"-container"),e.setAttribute("role","dialog"),e.setAttribute("aria-label","Recording preview steps dialog")}catch(e){this.loggingService.catch("Error in RecordingPreviewStepsDialogComponent setupA11yAttributes:",e)}}ngOnChanges(e){try{e&&Object.keys(e).forEach(t=>{this.componentConfigSignal.update(i=>(i=k(f({},i),{[t]:e[t].currentValue}),i))})}catch(t){this.loggingService.catch("Error in RecordingPreviewStepsDialogComponent ngOnChanges: ",t)}}ngAfterViewInit(){try{this.dialogRef.addPanelClass("snippyly-recording-preview-steps-dialog"),this.dialogRef.disableClose=!0}catch(e){this.loggingService.catch("Error in RecordingPreviewStepsDialogComponent ngAfterViewInit: ",e)}}toggleSettings(e){try{e.stopPropagation(),this.componentConfigSignal.update(t=>(t=k(f({},t),{isSettingsOpen:!t.isSettingsOpen}),t))}catch(t){this.loggingService.catch("Error in RecordingPreviewStepsDialogComponent toggleSettings: ",t)}}toggleAudio(){try{this.componentConfigSignal().mediaConfig.audio||this.componentConfigSignal.update(i=>(i=k(f({},i),{mediaConfig:k(f({},i.mediaConfig),{audio:{enabled:!0}})}),i));let e=!this.componentConfigSignal().mediaConfig.audio?.enabled;this.componentConfigSignal.update(i=>(i=k(f({},i),{mediaConfig:k(f({},i.mediaConfig),{audio:{enabled:e}})}),i));let t=this.componentConfigSignal().mediaStream?.getAudioTracks()[0];t?t.enabled=e:e&&(this.componentConfigSignal.update(i=>(i=k(f({},i),{mediaConfig:k(f({},i.mediaConfig),{audio:k(f({},i.mediaConfig.audio),{deviceId:this.defaultMediaSourceOptions?.selectedAudioDevice?.deviceId})})}),i)),this.updateMediaConfig(this.componentConfigSignal().mediaConfig))}catch(e){this.loggingService.catch("Error in RecordingPreviewStepsDialogComponent toggleAudio: ",e)}}toggleAudioOn(){try{this.componentConfigSignal.update(t=>(t=k(f({},t),{mediaConfig:k(f({},t.mediaConfig),{audio:{enabled:!0}})}),t));let e=this.componentConfigSignal().mediaStream?.getAudioTracks()[0];e?e.enabled=!0:(this.componentConfigSignal.update(t=>(t=k(f({},t),{mediaConfig:k(f({},t.mediaConfig),{audio:k(f({},t.mediaConfig.audio),{deviceId:this.defaultMediaSourceOptions?.selectedAudioDevice?.deviceId})})}),t)),this.updateMediaConfig(this.componentConfigSignal().mediaConfig))}catch(e){this.loggingService.catch("Error in RecordingPreviewStepsDialogComponent toggleAudioOn: ",e)}}toggleAudioOff(){try{this.componentConfigSignal.update(t=>(t=k(f({},t),{mediaConfig:k(f({},t.mediaConfig),{audio:{enabled:!1}})}),t));let e=this.componentConfigSignal().mediaStream?.getAudioTracks()[0];e&&(e.enabled=!1)}catch(e){this.loggingService.catch("Error in RecordingPreviewStepsDialogComponent toggleAudioOn: ",e)}}toggleVideo(){try{this.componentConfigSignal.update(e=>(e=f({},e),e.mediaConfig.video||(e.mediaConfig.video={enabled:!0}),e.mediaConfig.video.enabled=!e.mediaConfig.video.enabled,e.mediaConfig.video.deviceId=this.defaultMediaSourceOptions?.selectedVideoDevice?.deviceId,e)),this.updateMediaConfig(this.componentConfigSignal().mediaConfig)}catch(e){this.loggingService.catch("Error in RecordingPreviewStepsDialogComponent toggleVideo: ",e)}}updateMediaConfig(e){try{this.stopMediaStream(),this.getMediaStream(e)}catch(t){this.loggingService.catch("Error in RecordingPreviewStepsDialogComponent updateMediaConfig: ",t)}}getMediaStream(e){try{if(!navigator.mediaDevices){this.loggingService.catch("Error in RecordingPreviewStepsDialogComponent getMediaStream: ","No media devices");return}if(!navigator.mediaDevices.getUserMedia){this.loggingService.catch("Error in RecordingPreviewStepsDialogComponent getMediaStream: ","No getUserMedia");return}if(e.audio?.enabled||e.video?.enabled){let t=$_e(e);navigator.mediaDevices.getUserMedia(t).then(i=>{this.componentConfigSignal.update(a=>(a=k(f({},a),{mediaConfig:e,mediaStream:i}),a))}).catch(i=>{this.loggingService.catch("Error in RecordingPreviewStepsDialogComponent getMediaStream catch: ",i)})}else this.componentConfigSignal.update(t=>(t=k(f({},t),{mediaStream:void 0,mediaConfig:e}),t))}catch(t){this.loggingService.catch("Error in RecordingPreviewStepsDialogComponent getMediaStream: ",t)}}stopMediaStream(){try{this.componentConfigSignal.update(e=>(e=f({},e),e.mediaStream?.getTracks().forEach(t=>{t.stop()}),e.mediaStream=void 0,e))}catch(e){this.loggingService.catch("Error in RecordingPreviewStepsDialogComponent stopMediaStream: ",e)}}startCountdown(){return Q(this,null,function*(){try{let t=new ur().getBrowserName()==="Firefox",i=null;if(t&&this.componentConfigSignal().type==="screen")try{let a=this.componentConfigSignal().mediaConfig,l=$_e(a);Object.keys(l).length>0&&(i=yield navigator.mediaDevices.getUserMedia(l))}catch(a){this.loggingService.catch("Error getting Firefox user media stream:",a),i=null}if(this.componentConfigSignal().type==="screen"){if(!this.componentConfigSignal().mediaConfig.screen?.stream)try{let l=yield navigator.mediaDevices.getDisplayMedia({video:!0,audio:!0});this.componentConfigSignal.update(s=>(s=f({},s),s.mediaConfig.screen={enabled:!0,stream:l},s))}catch(l){this.loggingService.catch("Error getting screen media stream:",l),this.cancelCountdown();return}this.componentConfigSignal.update(l=>(l=f({},l),i&&(l.mediaConfig.audio?.enabled&&(l.mediaConfig.audio.stream=i),l.mediaConfig.video?.enabled&&(l.mediaConfig.video.stream=i)),l)),this.componentConfigSignal().mediaConfig.screen?.stream?.getTracks().forEach(l=>{l&&(l.onended=()=>{this.cancelCountdown()})})}this.recordingCountdownEnabled?(this.componentConfigSignal.update(a=>(a=k(f({},a),{countdownStarted:!0}),a)),this.countdownInterval=setInterval(()=>{this.componentConfigSignal().countdown>1?this.componentConfigSignal.update(a=>(a=k(f({},a),{countdown:a.countdown-1}),a)):this.closeDialog(this.componentConfigSignal().mediaConfig)},1e3)):this.closeDialog(this.componentConfigSignal().mediaConfig)}catch(e){this.loggingService.catch("Error in RecordingPreviewStepsDialogComponent startCountdown: ",e)}})}cancelCountdown(){try{if(this.componentConfigSignal.update(e=>(e=k(f({},e),{countdownStarted:!1,countdown:this.startCountdownFrom}),e)),this.clearInterval(),this.componentConfigSignal().type==="screen"){let e=this.componentConfigSignal().mediaConfig.screen?.stream;e&&e.getTracks().forEach(t=>{t.stop()}),this.componentConfigSignal.update(t=>(t=f({},t),t.mediaConfig.screen=void 0,t))}}catch(e){this.loggingService.catch("Error in RecordingPreviewStepsDialogComponent cancelCountdown: ",e)}}closeDialog(e){return Q(this,null,function*(){try{this.clearInterval(),e||(this.stopMediaStream(),this.componentConfigSignal.update(t=>(t=f({},t),t.mediaConfig&&(t.mediaConfig.screen?.stream&&(t.mediaConfig.screen.stream.getTracks().forEach(i=>i.stop()),t.mediaConfig.screen.stream=void 0),t.mediaConfig.audio?.stream&&(t.mediaConfig.audio.stream.getTracks().forEach(i=>i.stop()),t.mediaConfig.audio.stream=void 0),t.mediaConfig.video?.stream&&(t.mediaConfig.video.stream.getTracks().forEach(i=>i.stop()),t.mediaConfig.video.stream=void 0)),t))),this.dialogRef.close(e)}catch(t){this.loggingService.catch("Error in RecordingPreviewStepsDialogComponent closeDialog: ",t)}})}handleOverlayClick(e){try{this.componentConfigSignal.update(t=>(t=k(f({},t),{isSettingsOpen:!1}),t)),e.stopPropagation()}catch(t){this.loggingService.catch("Error in RecordingPreviewStepsDialogComponent handleOverlayClick: ",t)}}clearInterval(){try{this.countdownInterval&&(clearInterval(this.countdownInterval),this.countdownInterval=void 0)}catch(e){this.loggingService.catch("Error in RecordingPreviewStepsDialogComponent clearInterval: ",e)}}ngOnDestroy(){try{this.clearInterval(),this.stopMediaStream(),this.subscriptions.forEach(e=>{e?.unsubscribe()})}catch(e){this.loggingService.catch("Error in RecordingPreviewStepsDialogComponent ngOnDestroy: ",e)}}};o.\u0275fac=function(t){return new(t||o)(y(x),y(Fn),y(Fo),y(gv),y(Vi),y(Z),y(Yc,8))},o.\u0275cmp=O({type:o,selectors:[["snippyly-recording-preview-steps-dialog"]],hostVars:1,hostBindings:function(t,i){t&2&&T("data-velt-element",i.veltElement)},inputs:{darkMode:"darkMode",shadowDom:"shadowDom"},standalone:!1,features:[st],decls:1,vars:1,consts:[["recordingPreviewDialogRef",""],[4,"ngIf"],["role","dialog","aria-modal","true",3,"snippylyOverlay","snippylyOverlayZIndex"],[3,"componentConfigSignal",4,"ngIf"],[3,"componentConfigSignal"]],template:function(t,i){t&1&&p(0,XWe,5,7,"ng-container",1),t&2&&v("ngIf",i.componentConfigSignal())},styles:["html[_ngcontent-%COMP%]{--velt-base-rem-unit: 1}*[data-snippyly-element=true][_ngcontent-%COMP%], *[data-velt-element=true][_ngcontent-%COMP%]{font-family:var(--velt-default-font-family)}velt-wireframe[_ngcontent-%COMP%]{display:none!important}[_nghost-%COMP%]{--velt-green: var(--velt-light-mode-green);--velt-magenta: var(--velt-light-mode-magenta);--velt-amber: var(--velt-light-mode-amber);--velt-purple: var(--velt-light-mode-purple);--velt-cyan: var(--velt-light-mode-cyan);--velt-orange: var(--velt-light-mode-orange);--velt-black: var(--velt-light-mode-black);--velt-white: var(--velt-light-mode-white);--velt-gray: var(--velt-light-mode-gray);--velt-error: var(--velt-light-mode-error);--velt-error-hover: var(--velt-light-mode-error-hover);--velt-error-foreground: var(--velt-light-mode-error-foreground);--velt-error-light: var(--velt-light-mode-error-light);--velt-error-transparent: var(--velt-light-mode-error-transparent);--velt-warning: var(--velt-light-mode-warning);--velt-warning-hover: var(--velt-light-mode-warning-hover);--velt-warning-foreground: var(--velt-light-mode-warning-foreground);--velt-warning-light: var(--velt-light-mode-warning-light);--velt-warning-transparent: var(--velt-light-mode-warning-transparent);--velt-success: var(--velt-light-mode-success);--velt-success-hover: var(--velt-light-mode-success-hover);--velt-success-foreground: var(--velt-light-mode-success-foreground);--velt-success-light: var(--velt-light-mode-success-light);--velt-success-transparent: var(--velt-light-mode-success-transparent);--velt-accent: var(--velt-light-mode-accent);--velt-accent-text: var(--velt-light-mode-accent-text);--velt-accent-hover: var(--velt-light-mode-accent-hover);--velt-accent-foreground: var(--velt-light-mode-accent-foreground);--velt-accent-light: var(--velt-light-mode-accent-light);--velt-accent-transparent: var(--velt-light-mode-accent-transparent);--velt-text-0: var(--velt-light-mode-text-0);--velt-text-1: var(--velt-light-mode-text-1);--velt-text-2: var(--velt-light-mode-text-2);--velt-text-3: var(--velt-light-mode-text-3);--velt-text-4: var(--velt-light-mode-text-4);--velt-text-5: var(--velt-light-mode-text-5);--velt-text-6: var(--velt-light-mode-text-6);--velt-text-7: var(--velt-light-mode-text-7);--velt-text-8: var(--velt-light-mode-text-8);--velt-text-9: var(--velt-light-mode-text-9);--velt-text-10: var(--velt-light-mode-text-10);--velt-text-11: var(--velt-light-mode-text-11);--velt-text-12: var(--velt-light-mode-text-12);--velt-background-0: var(--velt-light-mode-background-0);--velt-background-1: var(--velt-light-mode-background-1);--velt-background-2: var(--velt-light-mode-background-2);--velt-background-3: var(--velt-light-mode-background-3);--velt-background-4: var(--velt-light-mode-background-4);--velt-background-5: var(--velt-light-mode-background-5);--velt-background-6: var(--velt-light-mode-background-6);--velt-background-7: var(--velt-light-mode-background-7);--velt-background-8: var(--velt-light-mode-background-8);--velt-background-9: var(--velt-light-mode-background-9);--velt-background-10: var(--velt-light-mode-background-10);--velt-border-0: var(--velt-light-mode-border-0);--velt-border-1: var(--velt-light-mode-border-1);--velt-border-2: var(--velt-light-mode-border-2);--velt-border-3: var(--velt-light-mode-border-3);--velt-border-4: var(--velt-light-mode-border-4);--velt-border-5: var(--velt-light-mode-border-5);--velt-border-6: var(--velt-light-mode-border-6);--velt-border-7: var(--velt-light-mode-border-7);--velt-border-8: var(--velt-light-mode-border-8);--velt-border-9: var(--velt-light-mode-border-9);--velt-border-10: var(--velt-light-mode-border-10);--velt-background-transparent: var(--velt-light-mode-background-transparent);--velt-border-transparent: var(--velt-light-mode-border-transparent);--velt-animation-transparent: var(--velt-light-mode-animation-transparent)}[dark][_nghost-%COMP%]{--velt-green: var(--velt-dark-mode-green);--velt-magenta: var(--velt-dark-mode-magenta);--velt-amber: var(--velt-dark-mode-amber);--velt-purple: var(--velt-dark-mode-purple);--velt-cyan: var(--velt-dark-mode-cyan);--velt-orange: var(--velt-dark-mode-orange);--velt-black: var(--velt-dark-mode-black);--velt-white: var(--velt-dark-mode-white);--velt-gray: var(--velt-dark-mode-gray);--velt-error: var(--velt-dark-mode-error);--velt-error-hover: var(--velt-dark-mode-error-hover);--velt-error-foreground: var(--velt-dark-mode-error-foreground);--velt-error-light: var(--velt-dark-mode-error-light);--velt-error-transparent: var(--velt-dark-mode-error-transparent);--velt-warning: var(--velt-dark-mode-warning);--velt-warning-hover: var(--velt-dark-mode-warning-hover);--velt-warning-foreground: var(--velt-dark-mode-warning-foreground);--velt-warning-light: var(--velt-dark-mode-warning-light);--velt-warning-transparent: var(--velt-dark-mode-warning-transparent);--velt-success: var(--velt-dark-mode-success);--velt-success-hover: var(--velt-dark-mode-success-hover);--velt-success-foreground: var(--velt-dark-mode-success-foreground);--velt-success-light: var(--velt-dark-mode-success-light);--velt-success-transparent: var(--velt-dark-mode-success-transparent);--velt-accent: var(--velt-dark-mode-accent);--velt-accent-text: var(--velt-dark-mode-accent-text);--velt-accent-hover: var(--velt-dark-mode-accent-hover);--velt-accent-foreground: var(--velt-dark-mode-accent-foreground);--velt-accent-light: var(--velt-dark-mode-accent-light);--velt-accent-transparent: var(--velt-dark-mode-accent-transparent);--velt-text-0: var(--velt-dark-mode-text-0);--velt-text-1: var(--velt-dark-mode-text-1);--velt-text-2: var(--velt-dark-mode-text-2);--velt-text-3: var(--velt-dark-mode-text-3);--velt-text-4: var(--velt-dark-mode-text-4);--velt-text-5: var(--velt-dark-mode-text-5);--velt-text-6: var(--velt-dark-mode-text-6);--velt-text-7: var(--velt-dark-mode-text-7);--velt-text-8: var(--velt-dark-mode-text-8);--velt-text-9: var(--velt-dark-mode-text-9);--velt-text-10: var(--velt-dark-mode-text-10);--velt-text-11: var(--velt-dark-mode-text-11);--velt-text-12: var(--velt-dark-mode-text-12);--velt-background-0: var(--velt-dark-mode-background-0);--velt-background-1: var(--velt-dark-mode-background-1);--velt-background-2: var(--velt-dark-mode-background-2);--velt-background-3: var(--velt-dark-mode-background-3);--velt-background-4: var(--velt-dark-mode-background-4);--velt-background-5: var(--velt-dark-mode-background-5);--velt-background-6: var(--velt-dark-mode-background-6);--velt-background-7: var(--velt-dark-mode-background-7);--velt-background-8: var(--velt-dark-mode-background-8);--velt-background-9: var(--velt-dark-mode-background-9);--velt-background-10: var(--velt-dark-mode-background-10);--velt-border-0: var(--velt-dark-mode-border-0);--velt-border-1: var(--velt-dark-mode-border-1);--velt-border-2: var(--velt-dark-mode-border-2);--velt-border-3: var(--velt-dark-mode-border-3);--velt-border-4: var(--velt-dark-mode-border-4);--velt-border-5: var(--velt-dark-mode-border-5);--velt-border-6: var(--velt-dark-mode-border-6);--velt-border-7: var(--velt-dark-mode-border-7);--velt-border-8: var(--velt-dark-mode-border-8);--velt-border-9: var(--velt-dark-mode-border-9);--velt-border-10: var(--velt-dark-mode-border-10);--velt-background-transparent: var(--velt-dark-mode-background-transparent);--velt-border-transparent: var(--velt-dark-mode-border-transparent);--velt-animation-transparent: var(--velt-dark-mode-animation-transparent)} .velt-mat-dialog-container.snippyly-recording-preview-steps-dialog{max-width:none} .velt-mat-dialog-container.snippyly-recording-preview-steps-dialog mat-dialog-container .mat-mdc-dialog-surface.mdc-dialog__surface{background:transparent;padding:0;margin:0;border-radius:var(--velt-border-radius-lg)}"],changeDetection:0});let n=o;return n})();function $_e(n){try{let o={};return n.audio?.enabled&&(o.audio={deviceId:n.audio.deviceId?{exact:n.audio.deviceId}:void 0}),n.video?.enabled&&(o.video={deviceId:n.video.deviceId?{exact:n.video.deviceId}:void 0}),o}catch{return{}}}var Kl=(()=>{let o=class o{constructor(e){this.loggingService=e,this.isPipActive$=new Se(!1),this.pipStopRecordingTriggered$=new Se(!1),this.pipPauseRecordingTriggered$=new Se(!1),this.pictureInPicture$=new Se(!1),this.pipClearRecordingTriggered$=new Se(!1)}getPipClearRecordingTriggered$(){return this.pipClearRecordingTriggered$.asObservable()}resetPipClearRecordingTriggered(){this.pipClearRecordingTriggered$.next(!1)}openPictureInPicture(e,t){return Q(this,null,function*(){try{if(!this.isPictureInPictureEnabled()||!e||document.pictureInPictureElement||window.documentPictureInPicture?.window)return;if("documentPictureInPicture"in window){yield this.createDocumentPip(e,t);return}if(document.pictureInPictureEnabled){let i=yield this.findVideoElement();if(!i){this.loggingService.warn("No video element found for Picture-in-Picture");return}yield i.requestPictureInPicture(),this.isPipActive$.next(!0);return}}catch(i){this.loggingService.catch("Error in PipService openPictureInPicture:",i)}})}createDocumentPip(e,t){return Q(this,null,function*(){try{let i=window.documentPictureInPicture;this.pipWindow=yield i.requestWindow({width:320,height:288}),yield this.addStylesToPip(),yield this.createControlPanelInPip(e,t),this.pipWindow?.addEventListener("unload",()=>{try{this.isPipActive$.next(!1),this.pipWindow=void 0}catch(a){this.loggingService.catch("Error in PipService createDocumentPip unload:",a)}}),this.isPipActive$.next(!0)}catch{this.isPipActive$.next(!1),this.pipWindow=void 0}})}addStylesToPip(){return Q(this,null,function*(){try{if(!this.pipWindow)return;this.pipWindow.document.body.style.margin="0",this.pipWindow.document.body.style.padding="0",this.pipWindow.document.body.style.backgroundColor="#000",this.pipWindow.document.body.style.display="flex",this.pipWindow.document.body.style.alignItems="center",this.pipWindow.document.body.style.justifyContent="center"}catch(e){this.loggingService.catch("Error in PipService copyStylesToPip:",e)}})}createControlPanelInPip(e,t){return Q(this,null,function*(){if(this.pipWindow)try{let i=this.pipWindow.document.createElement("div");i.style.cssText=`
|
|
409
409
|
display: flex;
|
|
410
410
|
flex-direction: column;
|
|
411
411
|
`;let a=this.pipWindow.document.createElement("div");a.style.cssText=`
|