*"}}var _r=new Set(["true","1"]),yr=new Set(["false","0"]);function Ul(n,t){let e=_r.has(n)||yr.has(n),i=_r.has(t)||yr.has(t);return(r,o)=>{let a=n==wr||n==r,c=t==wr||t==o;return!a&&e&&typeof r=="boolean"&&(a=r?_r.has(n):yr.has(n)),!c&&i&&typeof o=="boolean"&&(c=o?_r.has(t):yr.has(t)),a&&c}}var ec=":self",Rm=new RegExp(`s*${ec}s*,?`,"g");function tc(n,t,e,i){return new ia(n).build(t,e,i)}var $l="",ia=class{_driver;constructor(t){this._driver=t}build(t,e,i){let r=new na(e);return this._resetContextStyleTimingState(r),Te(this,ki(t),r)}_resetContextStyleTimingState(t){t.currentQuerySelector=$l,t.collectedStyles=new Map,t.collectedStyles.set($l,new Map),t.currentTime=0}visitTrigger(t,e){let i=e.queryCount=0,r=e.depCount=0,o=[],a=[];return t.name.charAt(0)=="@"&&e.errors.push(fl()),t.definitions.forEach(c=>{if(this._resetContextStyleTimingState(e),c.type==V.State){let m=c,p=m.name;p.toString().split(/\s*,\s*/).forEach(x=>{m.name=x,o.push(this.visitState(m,e))}),m.name=p}else if(c.type==V.Transition){let m=this.visitTransition(c,e);i+=m.queryCount,r+=m.depCount,a.push(m)}else e.errors.push(gl())}),{type:V.Trigger,name:t.name,states:o,transitions:a,queryCount:i,depCount:r,options:null}}visitState(t,e){let i=this.visitStyle(t.styles,e),r=t.options&&t.options.params||null;if(i.containsDynamicStyles){let o=new Set,a=r||{};i.styles.forEach(c=>{c instanceof Map&&c.forEach(m=>{Yo(m).forEach(p=>{a.hasOwnProperty(p)||o.add(p)})})}),o.size&&e.errors.push(_l(t.name,[...o.values()]))}return{type:V.State,name:t.name,style:i,options:r?{params:r}:null}}visitTransition(t,e){e.queryCount=0,e.depCount=0;let i=Te(this,ki(t.animation),e),r=Tm(t.expr,e.errors);return{type:V.Transition,matchers:r,animation:i,queryCount:e.queryCount,depCount:e.depCount,options:Xt(t.options)}}visitSequence(t,e){return{type:V.Sequence,steps:t.steps.map(i=>Te(this,i,e)),options:Xt(t.options)}}visitGroup(t,e){let i=e.currentTime,r=0,o=t.steps.map(a=>{e.currentTime=i;let c=Te(this,a,e);return r=Math.max(r,e.currentTime),c});return e.currentTime=r,{type:V.Group,steps:o,options:Xt(t.options)}}visitAnimate(t,e){let i=Om(t.timings,e.errors);e.currentAnimateTimings=i;let r,o=t.styles?t.styles:It({});if(o.type==V.Keyframes)r=this.visitKeyframes(o,e);else{let a=t.styles,c=!1;if(!a){c=!0;let p={};i.easing&&(p.easing=i.easing),a=It(p)}e.currentTime+=i.duration+i.delay;let m=this.visitStyle(a,e);m.isEmptyStep=c,r=m}return e.currentAnimateTimings=null,{type:V.Animate,timings:i,style:r,options:null}}visitStyle(t,e){let i=this._makeStyleAst(t,e);return this._validateStyleAst(i,e),i}_makeStyleAst(t,e){let i=[],r=Array.isArray(t.styles)?t.styles:[t.styles];for(let c of r)typeof c=="string"?c===$e?i.push(c):e.errors.push(yl(c)):i.push(new Map(Object.entries(c)));let o=!1,a=null;return i.forEach(c=>{if(c instanceof Map&&(c.has("easing")&&(a=c.get("easing"),c.delete("easing")),!o)){for(let m of c.values())if(m.toString().indexOf(Wo)>=0){o=!0;break}}}),{type:V.Style,styles:i,easing:a,offset:t.offset,containsDynamicStyles:o,options:null}}_validateStyleAst(t,e){let i=e.currentAnimateTimings,r=e.currentTime,o=e.currentTime;i&&o>0&&(o-=i.duration+i.delay),t.styles.forEach(a=>{typeof a!="string"&&a.forEach((c,m)=>{let p=e.collectedStyles.get(e.currentQuerySelector),x=p.get(m),C=!0;x&&(o!=r&&o>=x.startTime&&r<=x.endTime&&(e.errors.push(vl(m,x.startTime,x.endTime,o,r)),C=!1),o=x.startTime),C&&p.set(m,{startTime:o,endTime:r}),e.options&&Bl(c,e.options,e.errors)})})}visitKeyframes(t,e){let i={type:V.Keyframes,styles:[],options:null};if(!e.currentAnimateTimings)return e.errors.push(bl()),i;let r=1,o=0,a=[],c=!1,m=!1,p=0,x=t.steps.map(te=>{let re=this._makeStyleAst(te,e),oe=re.offset!=null?re.offset:Am(re.styles),ge=0;return oe!=null&&(o++,ge=re.offset=oe),m=m||ge<0||ge>1,c=c||ge0&&o{let oe=R>0?re==P?1:R*re:a[re],ge=oe*G;e.currentTime=E+A.delay+ge,A.duration=ge,this._validateStyleAst(te,e),te.offset=oe,i.styles.push(te)}),i}visitReference(t,e){return{type:V.Reference,animation:Te(this,ki(t.animation),e),options:Xt(t.options)}}visitAnimateChild(t,e){return e.depCount++,{type:V.AnimateChild,options:Xt(t.options)}}visitAnimateRef(t,e){return{type:V.AnimateRef,animation:this.visitReference(t.animation,e),options:Xt(t.options)}}visitQuery(t,e){let i=e.currentQuerySelector,r=t.options||{};e.queryCount++,e.currentQuery=t;let[o,a]=Pm(t.selector);e.currentQuerySelector=i.length?i+" "+o:o,Ee(e.collectedStyles,e.currentQuerySelector,new Map);let c=Te(this,ki(t.animation),e);return e.currentQuery=null,e.currentQuerySelector=i,{type:V.Query,selector:o,limit:r.limit||0,optional:!!r.optional,includeSelf:a,animation:c,originalSelector:t.selector,options:Xt(t.options)}}visitStagger(t,e){e.currentQuery||e.errors.push(Sl());let i=t.timings==="full"?{duration:0,delay:0,easing:"full"}:sn(t.timings,e.errors,!0);return{type:V.Stagger,animation:Te(this,ki(t.animation),e),timings:i,options:null}}};function Pm(n){let t=!!n.split(/\s*,\s*/).find(e=>e==ec);return t&&(n=n.replace(Rm,"")),n=n.replace(/@\*/g,an).replace(/@\w+/g,e=>an+"-"+e.slice(1)).replace(/:animating/g,hr),[n,t]}function Im(n){return n?L({},n):null}var na=class{errors;queryCount=0;depCount=0;currentTransition=null;currentQuery=null;currentQuerySelector=null;currentAnimateTimings=null;currentTime=0;collectedStyles=new Map;options=null;unsupportedCSSPropertiesFound=new Set;constructor(t){this.errors=t}};function Am(n){if(typeof n=="string")return null;let t=null;if(Array.isArray(n))n.forEach(e=>{if(e instanceof Map&&e.has("offset")){let i=e;t=parseFloat(i.get("offset")),i.delete("offset")}});else if(n instanceof Map&&n.has("offset")){let e=n;t=parseFloat(e.get("offset")),e.delete("offset")}return t}function Om(n,t){if(n.hasOwnProperty("duration"))return n;if(typeof n=="number"){let o=sn(n,t).duration;return Xo(o,0,"")}let e=n;if(e.split(/\s+/).some(o=>o.charAt(0)=="{"&&o.charAt(1)=="{")){let o=Xo(0,0,"");return o.dynamic=!0,o.strValue=e,o}let r=sn(e,t);return Xo(r.duration,r.delay,r.easing)}function Xt(n){return n?(n=L({},n),n.params&&(n.params=Im(n.params))):n={},n}function Xo(n,t,e){return{duration:n,delay:t,easing:e}}function ha(n,t,e,i,r,o,a=null,c=!1){return{type:1,element:n,keyframes:t,preStyleProps:e,postStyleProps:i,duration:r,delay:o,totalTime:r+o,easing:a,subTimeline:c}}var cn=class{_map=new Map;get(t){return this._map.get(t)||[]}append(t,e){let i=this._map.get(t);i||this._map.set(t,i=[]),i.push(...e)}has(t){return this._map.has(t)}clear(){this._map.clear()}},Lm=1,Fm=":enter",Nm=new RegExp(Fm,"g"),jm=":leave",Vm=new RegExp(jm,"g");function ic(n,t,e,i,r,o=new Map,a=new Map,c,m,p=[]){return new ra().buildKeyframes(n,t,e,i,r,o,a,c,m,p)}var ra=class{buildKeyframes(t,e,i,r,o,a,c,m,p,x=[]){p=p||new cn;let C=new oa(t,e,p,r,o,x,[]);C.options=m;let R=m.delay?dt(m.delay):0;C.currentTimeline.delayNextStep(R),C.currentTimeline.setStyles([a],null,C.errors,m),Te(this,i,C);let P=C.timelines.filter(E=>E.containsAnimation());if(P.length&&c.size){let E;for(let A=P.length-1;A>=0;A--){let G=P[A];if(G.element===e){E=G;break}}E&&!E.allowOnlyTimelineStyles()&&E.setStyles([c],null,C.errors,m)}return P.length?P.map(E=>E.buildKeyframes()):[ha(e,[],[],[],0,R,"",!1)]}visitTrigger(t,e){}visitState(t,e){}visitTransition(t,e){}visitAnimateChild(t,e){let i=e.subInstructions.get(e.element);if(i){let r=e.createSubContext(t.options),o=e.currentTimeline.currentTime,a=this._visitSubInstructions(i,r,r.options);o!=a&&e.transformIntoNewTimeline(a)}e.previousNode=t}visitAnimateRef(t,e){let i=e.createSubContext(t.options);i.transformIntoNewTimeline(),this._applyAnimationRefDelays([t.options,t.animation.options],e,i),this.visitReference(t.animation,i),e.transformIntoNewTimeline(i.currentTimeline.currentTime),e.previousNode=t}_applyAnimationRefDelays(t,e,i){for(let r of t){let o=r?.delay;if(o){let a=typeof o=="number"?o:dt(Ei(o,r?.params??{},e.errors));i.delayNextStep(a)}}}_visitSubInstructions(t,e,i){let o=e.currentTimeline.currentTime,a=i.duration!=null?dt(i.duration):null,c=i.delay!=null?dt(i.delay):null;return a!==0&&t.forEach(m=>{let p=e.appendInstructionToTimeline(m,a,c);o=Math.max(o,p.duration+p.delay)}),o}visitReference(t,e){e.updateOptions(t.options,!0),Te(this,t.animation,e),e.previousNode=t}visitSequence(t,e){let i=e.subContextCount,r=e,o=t.options;if(o&&(o.params||o.delay)&&(r=e.createSubContext(o),r.transformIntoNewTimeline(),o.delay!=null)){r.previousNode.type==V.Style&&(r.currentTimeline.snapshotCurrentStyles(),r.previousNode=Cr);let a=dt(o.delay);r.delayNextStep(a)}t.steps.length&&(t.steps.forEach(a=>Te(this,a,r)),r.currentTimeline.applyStylesToKeyframe(),r.subContextCount>i&&r.transformIntoNewTimeline()),e.previousNode=t}visitGroup(t,e){let i=[],r=e.currentTimeline.currentTime,o=t.options&&t.options.delay?dt(t.options.delay):0;t.steps.forEach(a=>{let c=e.createSubContext(t.options);o&&c.delayNextStep(o),Te(this,a,c),r=Math.max(r,c.currentTimeline.currentTime),i.push(c.currentTimeline)}),i.forEach(a=>e.currentTimeline.mergeTimelineCollectedStyles(a)),e.transformIntoNewTimeline(r),e.previousNode=t}_visitTiming(t,e){if(t.dynamic){let i=t.strValue,r=e.params?Ei(i,e.params,e.errors):i;return sn(r,e.errors)}else return{duration:t.duration,delay:t.delay,easing:t.easing}}visitAnimate(t,e){let i=e.currentAnimateTimings=this._visitTiming(t.timings,e),r=e.currentTimeline;i.delay&&(e.incrementTime(i.delay),r.snapshotCurrentStyles());let o=t.style;o.type==V.Keyframes?this.visitKeyframes(o,e):(e.incrementTime(i.duration),this.visitStyle(o,e),r.applyStylesToKeyframe()),e.currentAnimateTimings=null,e.previousNode=t}visitStyle(t,e){let i=e.currentTimeline,r=e.currentAnimateTimings;!r&&i.hasCurrentStyleProperties()&&i.forwardFrame();let o=r&&r.easing||t.easing;t.isEmptyStep?i.applyEmptyStep(o):i.setStyles(t.styles,o,e.errors,e.options),e.previousNode=t}visitKeyframes(t,e){let i=e.currentAnimateTimings,r=e.currentTimeline.duration,o=i.duration,c=e.createSubContext().currentTimeline;c.easing=i.easing,t.styles.forEach(m=>{let p=m.offset||0;c.forwardTime(p*o),c.setStyles(m.styles,m.easing,e.errors,e.options),c.applyStylesToKeyframe()}),e.currentTimeline.mergeTimelineCollectedStyles(c),e.transformIntoNewTimeline(r+o),e.previousNode=t}visitQuery(t,e){let i=e.currentTimeline.currentTime,r=t.options||{},o=r.delay?dt(r.delay):0;o&&(e.previousNode.type===V.Style||i==0&&e.currentTimeline.hasCurrentStyleProperties())&&(e.currentTimeline.snapshotCurrentStyles(),e.previousNode=Cr);let a=i,c=e.invokeQuery(t.selector,t.originalSelector,t.limit,t.includeSelf,!!r.optional,e.errors);e.currentQueryTotal=c.length;let m=null;c.forEach((p,x)=>{e.currentQueryIndex=x;let C=e.createSubContext(t.options,p);o&&C.delayNextStep(o),p===e.element&&(m=C.currentTimeline),Te(this,t.animation,C),C.currentTimeline.applyStylesToKeyframe();let R=C.currentTimeline.currentTime;a=Math.max(a,R)}),e.currentQueryIndex=0,e.currentQueryTotal=0,e.transformIntoNewTimeline(a),m&&(e.currentTimeline.mergeTimelineCollectedStyles(m),e.currentTimeline.snapshotCurrentStyles()),e.previousNode=t}visitStagger(t,e){let i=e.parentContext,r=e.currentTimeline,o=t.timings,a=Math.abs(o.duration),c=a*(e.currentQueryTotal-1),m=a*e.currentQueryIndex;switch(o.duration<0?"reverse":o.easing){case"reverse":m=c-m;break;case"full":m=i.currentStaggerTime;break}let x=e.currentTimeline;m&&x.delayNextStep(m);let C=x.currentTime;Te(this,t.animation,e),e.previousNode=t,i.currentStaggerTime=r.currentTime-C+(r.startTime-i.currentTimeline.startTime)}},Cr={},oa=class n{_driver;element;subInstructions;_enterClassName;_leaveClassName;errors;timelines;parentContext=null;currentTimeline;currentAnimateTimings=null;previousNode=Cr;subContextCount=0;options={};currentQueryIndex=0;currentQueryTotal=0;currentStaggerTime=0;constructor(t,e,i,r,o,a,c,m){this._driver=t,this.element=e,this.subInstructions=i,this._enterClassName=r,this._leaveClassName=o,this.errors=a,this.timelines=c,this.currentTimeline=m||new Sr(this._driver,e,0),c.push(this.currentTimeline)}get params(){return this.options.params}updateOptions(t,e){if(!t)return;let i=t,r=this.options;i.duration!=null&&(r.duration=dt(i.duration)),i.delay!=null&&(r.delay=dt(i.delay));let o=i.params;if(o){let a=r.params;a||(a=this.options.params={}),Object.keys(o).forEach(c=>{(!e||!a.hasOwnProperty(c))&&(a[c]=Ei(o[c],a,this.errors))})}}_copyOptions(){let t={};if(this.options){let e=this.options.params;if(e){let i=t.params={};Object.keys(e).forEach(r=>{i[r]=e[r]})}}return t}createSubContext(t=null,e,i){let r=e||this.element,o=new n(this._driver,r,this.subInstructions,this._enterClassName,this._leaveClassName,this.errors,this.timelines,this.currentTimeline.fork(r,i||0));return o.previousNode=this.previousNode,o.currentAnimateTimings=this.currentAnimateTimings,o.options=this._copyOptions(),o.updateOptions(t),o.currentQueryIndex=this.currentQueryIndex,o.currentQueryTotal=this.currentQueryTotal,o.parentContext=this,this.subContextCount++,o}transformIntoNewTimeline(t){return this.previousNode=Cr,this.currentTimeline=this.currentTimeline.fork(this.element,t),this.timelines.push(this.currentTimeline),this.currentTimeline}appendInstructionToTimeline(t,e,i){let r={duration:e??t.duration,delay:this.currentTimeline.currentTime+(i??0)+t.delay,easing:""},o=new aa(this._driver,t.element,t.keyframes,t.preStyleProps,t.postStyleProps,r,t.stretchStartingKeyframe);return this.timelines.push(o),r}incrementTime(t){this.currentTimeline.forwardTime(this.currentTimeline.duration+t)}delayNextStep(t){t>0&&this.currentTimeline.delayNextStep(t)}invokeQuery(t,e,i,r,o,a){let c=[];if(r&&c.push(this.element),t.length>0){t=t.replace(Nm,"."+this._enterClassName),t=t.replace(Vm,"."+this._leaveClassName);let m=i!=1,p=this._driver.query(this.element,t,m);i!==0&&(p=i<0?p.slice(p.length+i,p.length):p.slice(0,i)),c.push(...p)}return!o&&c.length==0&&a.push(kl(e)),c}},Sr=class n{_driver;element;startTime;_elementTimelineStylesLookup;duration=0;easing=null;_previousKeyframe=new Map;_currentKeyframe=new Map;_keyframes=new Map;_styleSummary=new Map;_localTimelineStyles=new Map;_globalTimelineStyles;_pendingStyles=new Map;_backFill=new Map;_currentEmptyStepKeyframe=null;constructor(t,e,i,r){this._driver=t,this.element=e,this.startTime=i,this._elementTimelineStylesLookup=r,this._elementTimelineStylesLookup||(this._elementTimelineStylesLookup=new Map),this._globalTimelineStyles=this._elementTimelineStylesLookup.get(e),this._globalTimelineStyles||(this._globalTimelineStyles=this._localTimelineStyles,this._elementTimelineStylesLookup.set(e,this._localTimelineStyles)),this._loadKeyframe()}containsAnimation(){switch(this._keyframes.size){case 0:return!1;case 1:return this.hasCurrentStyleProperties();default:return!0}}hasCurrentStyleProperties(){return this._currentKeyframe.size>0}get currentTime(){return this.startTime+this.duration}delayNextStep(t){let e=this._keyframes.size===1&&this._pendingStyles.size;this.duration||e?(this.forwardTime(this.currentTime+t),e&&this.snapshotCurrentStyles()):this.startTime+=t}fork(t,e){return this.applyStylesToKeyframe(),new n(this._driver,t,e||this.currentTime,this._elementTimelineStylesLookup)}_loadKeyframe(){this._currentKeyframe&&(this._previousKeyframe=this._currentKeyframe),this._currentKeyframe=this._keyframes.get(this.duration),this._currentKeyframe||(this._currentKeyframe=new Map,this._keyframes.set(this.duration,this._currentKeyframe))}forwardFrame(){this.duration+=Lm,this._loadKeyframe()}forwardTime(t){this.applyStylesToKeyframe(),this.duration=t,this._loadKeyframe()}_updateStyle(t,e){this._localTimelineStyles.set(t,e),this._globalTimelineStyles.set(t,e),this._styleSummary.set(t,{time:this.currentTime,value:e})}allowOnlyTimelineStyles(){return this._currentEmptyStepKeyframe!==this._currentKeyframe}applyEmptyStep(t){t&&this._previousKeyframe.set("easing",t);for(let[e,i]of this._globalTimelineStyles)this._backFill.set(e,i||$e),this._currentKeyframe.set(e,$e);this._currentEmptyStepKeyframe=this._currentKeyframe}setStyles(t,e,i,r){e&&this._previousKeyframe.set("easing",e);let o=r&&r.params||{},a=zm(t,this._globalTimelineStyles);for(let[c,m]of a){let p=Ei(m,o,i);this._pendingStyles.set(c,p),this._localTimelineStyles.has(c)||this._backFill.set(c,this._globalTimelineStyles.get(c)??$e),this._updateStyle(c,p)}}applyStylesToKeyframe(){this._pendingStyles.size!=0&&(this._pendingStyles.forEach((t,e)=>{this._currentKeyframe.set(e,t)}),this._pendingStyles.clear(),this._localTimelineStyles.forEach((t,e)=>{this._currentKeyframe.has(e)||this._currentKeyframe.set(e,t)}))}snapshotCurrentStyles(){for(let[t,e]of this._localTimelineStyles)this._pendingStyles.set(t,e),this._updateStyle(t,e)}getFinalKeyframe(){return this._keyframes.get(this.duration)}get properties(){let t=[];for(let e in this._currentKeyframe)t.push(e);return t}mergeTimelineCollectedStyles(t){t._styleSummary.forEach((e,i)=>{let r=this._styleSummary.get(i);(!r||e.time>r.time)&&this._updateStyle(i,e.value)})}buildKeyframes(){this.applyStylesToKeyframe();let t=new Set,e=new Set,i=this._keyframes.size===1&&this.duration===0,r=[];this._keyframes.forEach((c,m)=>{let p=new Map([...this._backFill,...c]);p.forEach((x,C)=>{x===Si?t.add(C):x===$e&&e.add(C)}),i||p.set("offset",m/this.duration),r.push(p)});let o=[...t.values()],a=[...e.values()];if(i){let c=r[0],m=new Map(c);c.set("offset",0),m.set("offset",1),r=[c,m]}return ha(this.element,r,o,a,this.duration,this.startTime,this.easing,!1)}},aa=class extends Sr{keyframes;preStyleProps;postStyleProps;_stretchStartingKeyframe;timings;constructor(t,e,i,r,o,a,c=!1){super(t,e,a.delay),this.keyframes=i,this.preStyleProps=r,this.postStyleProps=o,this._stretchStartingKeyframe=c,this.timings={duration:a.duration,delay:a.delay,easing:a.easing}}containsAnimation(){return this.keyframes.length>1}buildKeyframes(){let t=this.keyframes,{delay:e,duration:i,easing:r}=this.timings;if(this._stretchStartingKeyframe&&e){let o=[],a=i+e,c=e/a,m=new Map(t[0]);m.set("offset",0),o.push(m);let p=new Map(t[0]);p.set("offset",ql(c)),o.push(p);let x=t.length-1;for(let C=1;C<=x;C++){let R=new Map(t[C]),P=R.get("offset"),E=e+P*i;R.set("offset",ql(E/a)),o.push(R)}i=a,e=0,r="",t=o}return ha(this.element,t,this.preStyleProps,this.postStyleProps,i,e,r,!0)}};function ql(n,t=3){let e=Math.pow(10,t-1);return Math.round(n*e)/e}function zm(n,t){let e=new Map,i;return n.forEach(r=>{if(r==="*"){i??=t.keys();for(let o of i)e.set(o,$e)}else for(let[o,a]of r)e.set(o,a)}),e}function Wl(n,t,e,i,r,o,a,c,m,p,x,C,R){return{type:0,element:n,triggerName:t,isRemovalTransition:r,fromState:e,fromStyles:o,toState:i,toStyles:a,timelines:c,queriedElements:m,preStyleProps:p,postStyleProps:x,totalTime:C,errors:R}}var Zo={},kr=class{_triggerName;ast;_stateStyles;constructor(t,e,i){this._triggerName=t,this.ast=e,this._stateStyles=i}match(t,e,i,r){return Bm(this.ast.matchers,t,e,i,r)}buildStyles(t,e,i){let r=this._stateStyles.get("*");return t!==void 0&&(r=this._stateStyles.get(t?.toString())||r),r?r.buildStyles(e,i):new Map}build(t,e,i,r,o,a,c,m,p,x){let C=[],R=this.ast.options&&this.ast.options.params||Zo,P=c&&c.params||Zo,E=this.buildStyles(i,P,C),A=m&&m.params||Zo,G=this.buildStyles(r,A,C),te=new Set,re=new Map,oe=new Map,ge=r==="void",ei={params:nc(A,R),delay:this.ast.options?.delay},Je=x?[]:ic(t,e,this.ast.animation,o,a,E,G,ei,p,C),xe=0;return Je.forEach(we=>{xe=Math.max(we.duration+we.delay,xe)}),C.length?Wl(e,this._triggerName,i,r,ge,E,G,[],[],re,oe,xe,C):(Je.forEach(we=>{let Ft=we.element,ti=Ee(re,Ft,new Set);we.preStyleProps.forEach(Nt=>ti.add(Nt));let Sa=Ee(oe,Ft,new Set);we.postStyleProps.forEach(Nt=>Sa.add(Nt)),Ft!==e&&te.add(Ft)}),Wl(e,this._triggerName,i,r,ge,E,G,Je,[...te.values()],re,oe,xe))}};function Bm(n,t,e,i,r){return n.some(o=>o(t,e,i,r))}function nc(n,t){let e=L({},t);return Object.entries(n).forEach(([i,r])=>{r!=null&&(e[i]=r)}),e}var sa=class{styles;defaultParams;normalizer;constructor(t,e,i){this.styles=t,this.defaultParams=e,this.normalizer=i}buildStyles(t,e){let i=new Map,r=nc(t,this.defaultParams);return this.styles.styles.forEach(o=>{typeof o!="string"&&o.forEach((a,c)=>{a&&(a=Ei(a,r,e));let m=this.normalizer.normalizePropertyName(c,e);a=this.normalizer.normalizeStyleValue(c,m,a,e),i.set(c,a)})}),i}};function Gm(n,t,e){return new la(n,t,e)}var la=class{name;ast;_normalizer;transitionFactories=[];fallbackTransition;states=new Map;constructor(t,e,i){this.name=t,this.ast=e,this._normalizer=i,e.states.forEach(r=>{let o=r.options&&r.options.params||{};this.states.set(r.name,new sa(r.style,o,i))}),Ql(this.states,"true","1"),Ql(this.states,"false","0"),e.transitions.forEach(r=>{this.transitionFactories.push(new kr(t,r,this.states))}),this.fallbackTransition=Hm(t,this.states)}get containsQueries(){return this.ast.queryCount>0}matchTransition(t,e,i,r){return this.transitionFactories.find(a=>a.match(t,e,i,r))||null}matchStyles(t,e,i){return this.fallbackTransition.buildStyles(t,e,i)}};function Hm(n,t,e){let i=[(a,c)=>!0],r={type:V.Sequence,steps:[],options:null},o={type:V.Transition,animation:r,matchers:i,options:null,queryCount:0,depCount:0};return new kr(n,o,t)}function Ql(n,t,e){n.has(t)?n.has(e)||n.set(e,n.get(t)):n.has(e)&&n.set(t,n.get(e))}var Um=new cn,ca=class{bodyNode;_driver;_normalizer;_animations=new Map;_playersById=new Map;players=[];constructor(t,e,i){this.bodyNode=t,this._driver=e,this._normalizer=i}register(t,e){let i=[],r=[],o=tc(this._driver,e,i,r);if(i.length)throw Dl(i);this._animations.set(t,o)}_buildPlayer(t,e,i){let r=t.element,o=Ho(this._normalizer,t.keyframes,e,i);return this._driver.animate(r,o,t.duration,t.delay,t.easing,[],!0)}create(t,e,i={}){let r=[],o=this._animations.get(t),a,c=new Map;if(o?(a=ic(this._driver,e,o,Qo,pr,new Map,new Map,i,Um,r),a.forEach(x=>{let C=Ee(c,x.element,new Map);x.postStyleProps.forEach(R=>C.set(R,null))})):(r.push(Rl()),a=[]),r.length)throw Pl(r);c.forEach((x,C)=>{x.forEach((R,P)=>{x.set(P,this._driver.computeStyle(C,P,$e))})});let m=a.map(x=>{let C=c.get(x.element);return this._buildPlayer(x,new Map,C)}),p=_t(m);return this._playersById.set(t,p),p.onDestroy(()=>this.destroy(t)),this.players.push(p),p}destroy(t){let e=this._getPlayer(t);e.destroy(),this._playersById.delete(t);let i=this.players.indexOf(e);i>=0&&this.players.splice(i,1)}_getPlayer(t){let e=this._playersById.get(t);if(!e)throw Il(t);return e}listen(t,e,i,r){let o=mr(e,"","","");return dr(this._getPlayer(t),i,o,r),()=>{}}command(t,e,i,r){if(i=="register"){this.register(t,r[0]);return}if(i=="create"){let a=r[0]||{};this.create(t,e,a);return}let o=this._getPlayer(t);switch(i){case"play":o.play();break;case"pause":o.pause();break;case"reset":o.reset();break;case"restart":o.restart();break;case"finish":o.finish();break;case"init":o.init();break;case"setPosition":o.setPosition(parseFloat(r[0]));break;case"destroy":this.destroy(t);break}}},Kl="ng-animate-queued",$m=".ng-animate-queued",Jo="ng-animate-disabled",qm=".ng-animate-disabled",Wm="ng-star-inserted",Qm=".ng-star-inserted",Km=[],rc={namespaceId:"",setForRemoval:!1,setForMove:!1,hasAnimation:!1,removedBeforeQueried:!1},Ym={namespaceId:"",setForMove:!1,setForRemoval:!1,hasAnimation:!1,removedBeforeQueried:!0},Ze="__ng_removed",dn=class{namespaceId;value;options;get params(){return this.options.params}constructor(t,e=""){this.namespaceId=e;let i=t&&t.hasOwnProperty("value"),r=i?t.value:t;if(this.value=Zm(r),i){let o=t,{value:a}=o,c=Ma(o,["value"]);this.options=c}else this.options={};this.options.params||(this.options.params={})}absorbOptions(t){let e=t.params;if(e){let i=this.options.params;Object.keys(e).forEach(r=>{i[r]==null&&(i[r]=e[r])})}}},ln="void",ea=new dn(ln),da=class{id;hostElement;_engine;players=[];_triggers=new Map;_queue=[];_elementListeners=new Map;_hostClassName;constructor(t,e,i){this.id=t,this.hostElement=e,this._engine=i,this._hostClassName="ng-tns-"+t,qe(e,this._hostClassName)}listen(t,e,i,r){if(!this._triggers.has(e))throw Al(i,e);if(i==null||i.length==0)throw Ol(e);if(!Jm(i))throw Ll(i,e);let o=Ee(this._elementListeners,t,[]),a={name:e,phase:i,callback:r};o.push(a);let c=Ee(this._engine.statesByElement,t,new Map);return c.has(e)||(qe(t,on),qe(t,on+"-"+e),c.set(e,ea)),()=>{this._engine.afterFlush(()=>{let m=o.indexOf(a);m>=0&&o.splice(m,1),this._triggers.has(e)||c.delete(e)})}}register(t,e){return this._triggers.has(t)?!1:(this._triggers.set(t,e),!0)}_getTrigger(t){let e=this._triggers.get(t);if(!e)throw Fl(t);return e}trigger(t,e,i,r=!0){let o=this._getTrigger(e),a=new mn(this.id,e,t),c=this._engine.statesByElement.get(t);c||(qe(t,on),qe(t,on+"-"+e),this._engine.statesByElement.set(t,c=new Map));let m=c.get(e),p=new dn(i,this.id);if(!(i&&i.hasOwnProperty("value"))&&m&&p.absorbOptions(m.options),c.set(e,p),m||(m=ea),!(p.value===ln)&&m.value===p.value){if(!iu(m.params,p.params)){let A=[],G=o.matchStyles(m.value,m.params,A),te=o.matchStyles(p.value,p.params,A);A.length?this._engine.reportError(A):this._engine.afterFlush(()=>{At(t,G),Xe(t,te)})}return}let R=Ee(this._engine.playersByElement,t,[]);R.forEach(A=>{A.namespaceId==this.id&&A.triggerName==e&&A.queued&&A.destroy()});let P=o.matchTransition(m.value,p.value,t,p.params),E=!1;if(!P){if(!r)return;P=o.fallbackTransition,E=!0}return this._engine.totalQueuedPlayers++,this._queue.push({element:t,triggerName:e,transition:P,fromState:m,toState:p,player:a,isFallbackTransition:E}),E||(qe(t,Kl),a.onStart(()=>{Ti(t,Kl)})),a.onDone(()=>{let A=this.players.indexOf(a);A>=0&&this.players.splice(A,1);let G=this._engine.playersByElement.get(t);if(G){let te=G.indexOf(a);te>=0&&G.splice(te,1)}}),this.players.push(a),R.push(a),a}deregister(t){this._triggers.delete(t),this._engine.statesByElement.forEach(e=>e.delete(t)),this._elementListeners.forEach((e,i)=>{this._elementListeners.set(i,e.filter(r=>r.name!=t))})}clearElementCache(t){this._engine.statesByElement.delete(t),this._elementListeners.delete(t);let e=this._engine.playersByElement.get(t);e&&(e.forEach(i=>i.destroy()),this._engine.playersByElement.delete(t))}_signalRemovalForInnerTriggers(t,e){let i=this._engine.driver.query(t,an,!0);i.forEach(r=>{if(r[Ze])return;let o=this._engine.fetchNamespacesByElement(r);o.size?o.forEach(a=>a.triggerLeaveAnimation(r,e,!1,!0)):this.clearElementCache(r)}),this._engine.afterFlushAnimationsDone(()=>i.forEach(r=>this.clearElementCache(r)))}triggerLeaveAnimation(t,e,i,r){let o=this._engine.statesByElement.get(t),a=new Map;if(o){let c=[];if(o.forEach((m,p)=>{if(a.set(p,m.value),this._triggers.has(p)){let x=this.trigger(t,p,ln,r);x&&c.push(x)}}),c.length)return this._engine.markElementAsRemoved(this.id,t,!0,e,a),i&&_t(c).onDone(()=>this._engine.processLeaveNode(t)),!0}return!1}prepareLeaveAnimationListeners(t){let e=this._elementListeners.get(t),i=this._engine.statesByElement.get(t);if(e&&i){let r=new Set;e.forEach(o=>{let a=o.name;if(r.has(a))return;r.add(a);let m=this._triggers.get(a).fallbackTransition,p=i.get(a)||ea,x=new dn(ln),C=new mn(this.id,a,t);this._engine.totalQueuedPlayers++,this._queue.push({element:t,triggerName:a,transition:m,fromState:p,toState:x,player:C,isFallbackTransition:!0})})}}removeNode(t,e){let i=this._engine;if(t.childElementCount&&this._signalRemovalForInnerTriggers(t,e),this.triggerLeaveAnimation(t,e,!0))return;let r=!1;if(i.totalAnimations){let o=i.players.length?i.playersByQueriedElement.get(t):[];if(o&&o.length)r=!0;else{let a=t;for(;a=a.parentNode;)if(i.statesByElement.get(a)){r=!0;break}}}if(this.prepareLeaveAnimationListeners(t),r)i.markElementAsRemoved(this.id,t,!1,e);else{let o=t[Ze];(!o||o===rc)&&(i.afterFlush(()=>this.clearElementCache(t)),i.destroyInnerAnimations(t),i._onRemovalComplete(t,e))}}insertNode(t,e){qe(t,this._hostClassName)}drainQueuedTransitions(t){let e=[];return this._queue.forEach(i=>{let r=i.player;if(r.destroyed)return;let o=i.element,a=this._elementListeners.get(o);a&&a.forEach(c=>{if(c.name==i.triggerName){let m=mr(o,i.triggerName,i.fromState.value,i.toState.value);m._data=t,dr(i.player,c.phase,m,c.callback)}}),r.markedForDestroy?this._engine.afterFlush(()=>{r.destroy()}):e.push(i)}),this._queue=[],e.sort((i,r)=>{let o=i.transition.ast.depCount,a=r.transition.ast.depCount;return o==0||a==0?o-a:this._engine.driver.containsElement(i.element,r.element)?1:-1})}destroy(t){this.players.forEach(e=>e.destroy()),this._signalRemovalForInnerTriggers(this.hostElement,t)}},ma=class{bodyNode;driver;_normalizer;players=[];newHostElements=new Map;playersByElement=new Map;playersByQueriedElement=new Map;statesByElement=new Map;disabledNodes=new Set;totalAnimations=0;totalQueuedPlayers=0;_namespaceLookup={};_namespaceList=[];_flushFns=[];_whenQuietFns=[];namespacesByHostElement=new Map;collectedEnterElements=[];collectedLeaveElements=[];onRemovalComplete=(t,e)=>{};_onRemovalComplete(t,e){this.onRemovalComplete(t,e)}constructor(t,e,i){this.bodyNode=t,this.driver=e,this._normalizer=i}get queuedPlayers(){let t=[];return this._namespaceList.forEach(e=>{e.players.forEach(i=>{i.queued&&t.push(i)})}),t}createNamespace(t,e){let i=new da(t,e,this);return this.bodyNode&&this.driver.containsElement(this.bodyNode,e)?this._balanceNamespaceList(i,e):(this.newHostElements.set(e,i),this.collectEnterElement(e)),this._namespaceLookup[t]=i}_balanceNamespaceList(t,e){let i=this._namespaceList,r=this.namespacesByHostElement;if(i.length-1>=0){let a=!1,c=this.driver.getParentElement(e);for(;c;){let m=r.get(c);if(m){let p=i.indexOf(m);i.splice(p+1,0,t),a=!0;break}c=this.driver.getParentElement(c)}a||i.unshift(t)}else i.push(t);return r.set(e,t),t}register(t,e){let i=this._namespaceLookup[t];return i||(i=this.createNamespace(t,e)),i}registerTrigger(t,e,i){let r=this._namespaceLookup[t];r&&r.register(e,i)&&this.totalAnimations++}destroy(t,e){t&&(this.afterFlush(()=>{}),this.afterFlushAnimationsDone(()=>{let i=this._fetchNamespace(t);this.namespacesByHostElement.delete(i.hostElement);let r=this._namespaceList.indexOf(i);r>=0&&this._namespaceList.splice(r,1),i.destroy(e),delete this._namespaceLookup[t]}))}_fetchNamespace(t){return this._namespaceLookup[t]}fetchNamespacesByElement(t){let e=new Set,i=this.statesByElement.get(t);if(i){for(let r of i.values())if(r.namespaceId){let o=this._fetchNamespace(r.namespaceId);o&&e.add(o)}}return e}trigger(t,e,i,r){if(vr(e)){let o=this._fetchNamespace(t);if(o)return o.trigger(e,i,r),!0}return!1}insertNode(t,e,i,r){if(!vr(e))return;let o=e[Ze];if(o&&o.setForRemoval){o.setForRemoval=!1,o.setForMove=!0;let a=this.collectedLeaveElements.indexOf(e);a>=0&&this.collectedLeaveElements.splice(a,1)}if(t){let a=this._fetchNamespace(t);a&&a.insertNode(e,i)}r&&this.collectEnterElement(e)}collectEnterElement(t){this.collectedEnterElements.push(t)}markElementAsDisabled(t,e){e?this.disabledNodes.has(t)||(this.disabledNodes.add(t),qe(t,Jo)):this.disabledNodes.has(t)&&(this.disabledNodes.delete(t),Ti(t,Jo))}removeNode(t,e,i){if(vr(e)){let r=t?this._fetchNamespace(t):null;r?r.removeNode(e,i):this.markElementAsRemoved(t,e,!1,i);let o=this.namespacesByHostElement.get(e);o&&o.id!==t&&o.removeNode(e,i)}else this._onRemovalComplete(e,i)}markElementAsRemoved(t,e,i,r,o){this.collectedLeaveElements.push(e),e[Ze]={namespaceId:t,setForRemoval:r,hasAnimation:i,removedBeforeQueried:!1,previousTriggersValues:o}}listen(t,e,i,r,o){return vr(e)?this._fetchNamespace(t).listen(e,i,r,o):()=>{}}_buildInstruction(t,e,i,r,o){return t.transition.build(this.driver,t.element,t.fromState.value,t.toState.value,i,r,t.fromState.options,t.toState.options,e,o)}destroyInnerAnimations(t){let e=this.driver.query(t,an,!0);e.forEach(i=>this.destroyActiveAnimationsForElement(i)),this.playersByQueriedElement.size!=0&&(e=this.driver.query(t,hr,!0),e.forEach(i=>this.finishActiveQueriedAnimationOnElement(i)))}destroyActiveAnimationsForElement(t){let e=this.playersByElement.get(t);e&&e.forEach(i=>{i.queued?i.markedForDestroy=!0:i.destroy()})}finishActiveQueriedAnimationOnElement(t){let e=this.playersByQueriedElement.get(t);e&&e.forEach(i=>i.finish())}whenRenderingDone(){return new Promise(t=>{if(this.players.length)return _t(this.players).onDone(()=>t());t()})}processLeaveNode(t){let e=t[Ze];if(e&&e.setForRemoval){if(t[Ze]=rc,e.namespaceId){this.destroyInnerAnimations(t);let i=this._fetchNamespace(e.namespaceId);i&&i.clearElementCache(t)}this._onRemovalComplete(t,e.setForRemoval)}t.classList?.contains(Jo)&&this.markElementAsDisabled(t,!1),this.driver.query(t,qm,!0).forEach(i=>{this.markElementAsDisabled(i,!1)})}flush(t=-1){let e=[];if(this.newHostElements.size&&(this.newHostElements.forEach((i,r)=>this._balanceNamespaceList(i,r)),this.newHostElements.clear()),this.totalAnimations&&this.collectedEnterElements.length)for(let i=0;ii()),this._flushFns=[],this._whenQuietFns.length){let i=this._whenQuietFns;this._whenQuietFns=[],e.length?_t(e).onDone(()=>{i.forEach(r=>r())}):i.forEach(r=>r())}}reportError(t){throw Nl(t)}_flushAnimations(t,e){let i=new cn,r=[],o=new Map,a=[],c=new Map,m=new Map,p=new Map,x=new Set;this.disabledNodes.forEach(M=>{x.add(M);let O=this.driver.query(M,$m,!0);for(let F=0;F{let F=Qo+A++;E.set(O,F),M.forEach(H=>qe(H,F))});let G=[],te=new Set,re=new Set;for(let M=0;Mte.add(H)):re.add(O))}let oe=new Map,ge=Zl(R,Array.from(te));ge.forEach((M,O)=>{let F=pr+A++;oe.set(O,F),M.forEach(H=>qe(H,F))}),t.push(()=>{P.forEach((M,O)=>{let F=E.get(O);M.forEach(H=>Ti(H,F))}),ge.forEach((M,O)=>{let F=oe.get(O);M.forEach(H=>Ti(H,F))}),G.forEach(M=>{this.processLeaveNode(M)})});let ei=[],Je=[];for(let M=this._namespaceList.length-1;M>=0;M--)this._namespaceList[M].drainQueuedTransitions(e).forEach(F=>{let H=F.player,me=F.element;if(ei.push(H),this.collectedEnterElements.length){let ye=me[Ze];if(ye&&ye.setForMove){if(ye.previousTriggersValues&&ye.previousTriggersValues.has(F.triggerName)){let jt=ye.previousTriggersValues.get(F.triggerName),Oe=this.statesByElement.get(F.element);if(Oe&&Oe.has(F.triggerName)){let pn=Oe.get(F.triggerName);pn.value=jt,Oe.set(F.triggerName,pn)}}H.destroy();return}}let et=!C||!this.driver.containsElement(C,me),Me=oe.get(me),yt=E.get(me),ie=this._buildInstruction(F,i,yt,Me,et);if(ie.errors&&ie.errors.length){Je.push(ie);return}if(et){H.onStart(()=>At(me,ie.fromStyles)),H.onDestroy(()=>Xe(me,ie.toStyles)),r.push(H);return}if(F.isFallbackTransition){H.onStart(()=>At(me,ie.fromStyles)),H.onDestroy(()=>Xe(me,ie.toStyles)),r.push(H);return}let Ta=[];ie.timelines.forEach(ye=>{ye.stretchStartingKeyframe=!0,this.disabledNodes.has(ye.element)||Ta.push(ye)}),ie.timelines=Ta,i.append(me,ie.timelines);let Pc={instruction:ie,player:H,element:me};a.push(Pc),ie.queriedElements.forEach(ye=>Ee(c,ye,[]).push(H)),ie.preStyleProps.forEach((ye,jt)=>{if(ye.size){let Oe=m.get(jt);Oe||m.set(jt,Oe=new Set),ye.forEach((pn,Kr)=>Oe.add(Kr))}}),ie.postStyleProps.forEach((ye,jt)=>{let Oe=p.get(jt);Oe||p.set(jt,Oe=new Set),ye.forEach((pn,Kr)=>Oe.add(Kr))})});if(Je.length){let M=[];Je.forEach(O=>{M.push(jl(O.triggerName,O.errors))}),ei.forEach(O=>O.destroy()),this.reportError(M)}let xe=new Map,we=new Map;a.forEach(M=>{let O=M.element;i.has(O)&&(we.set(O,O),this._beforeAnimationBuild(M.player.namespaceId,M.instruction,xe))}),r.forEach(M=>{let O=M.element;this._getPreviousPlayers(O,!1,M.namespaceId,M.triggerName,null).forEach(H=>{Ee(xe,O,[]).push(H),H.destroy()})});let Ft=G.filter(M=>Jl(M,m,p)),ti=new Map;Xl(ti,this.driver,re,p,$e).forEach(M=>{Jl(M,m,p)&&Ft.push(M)});let Nt=new Map;P.forEach((M,O)=>{Xl(Nt,this.driver,new Set(M),m,Si)}),Ft.forEach(M=>{let O=ti.get(M),F=Nt.get(M);ti.set(M,new Map([...O?.entries()??[],...F?.entries()??[]]))});let Qr=[],ka=[],Ea={};a.forEach(M=>{let{element:O,player:F,instruction:H}=M;if(i.has(O)){if(x.has(O)){F.onDestroy(()=>Xe(O,H.toStyles)),F.disabled=!0,F.overrideTotalTime(H.totalTime),r.push(F);return}let me=Ea;if(we.size>1){let Me=O,yt=[];for(;Me=Me.parentNode;){let ie=we.get(Me);if(ie){me=ie;break}yt.push(Me)}yt.forEach(ie=>we.set(ie,me))}let et=this._buildAnimation(F.namespaceId,H,xe,o,Nt,ti);if(F.setRealPlayer(et),me===Ea)Qr.push(F);else{let Me=this.playersByElement.get(me);Me&&Me.length&&(F.parentPlayer=_t(Me)),r.push(F)}}else At(O,H.fromStyles),F.onDestroy(()=>Xe(O,H.toStyles)),ka.push(F),x.has(O)&&r.push(F)}),ka.forEach(M=>{let O=o.get(M.element);if(O&&O.length){let F=_t(O);M.setRealPlayer(F)}}),r.forEach(M=>{M.parentPlayer?M.syncPlayerEvents(M.parentPlayer):M.destroy()});for(let M=0;M!et.destroyed);me.length?eu(this,O,me):this.processLeaveNode(O)}return G.length=0,Qr.forEach(M=>{this.players.push(M),M.onDone(()=>{M.destroy();let O=this.players.indexOf(M);this.players.splice(O,1)}),M.play()}),Qr}afterFlush(t){this._flushFns.push(t)}afterFlushAnimationsDone(t){this._whenQuietFns.push(t)}_getPreviousPlayers(t,e,i,r,o){let a=[];if(e){let c=this.playersByQueriedElement.get(t);c&&(a=c)}else{let c=this.playersByElement.get(t);if(c){let m=!o||o==ln;c.forEach(p=>{p.queued||!m&&p.triggerName!=r||a.push(p)})}}return(i||r)&&(a=a.filter(c=>!(i&&i!=c.namespaceId||r&&r!=c.triggerName))),a}_beforeAnimationBuild(t,e,i){let r=e.triggerName,o=e.element,a=e.isRemovalTransition?void 0:t,c=e.isRemovalTransition?void 0:r;for(let m of e.timelines){let p=m.element,x=p!==o,C=Ee(i,p,[]);this._getPreviousPlayers(p,x,a,c,e.toState).forEach(P=>{let E=P.getRealPlayer();E.beforeDestroy&&E.beforeDestroy(),P.destroy(),C.push(P)})}At(o,e.fromStyles)}_buildAnimation(t,e,i,r,o,a){let c=e.triggerName,m=e.element,p=[],x=new Set,C=new Set,R=e.timelines.map(E=>{let A=E.element;x.add(A);let G=A[Ze];if(G&&G.removedBeforeQueried)return new ct(E.duration,E.delay);let te=A!==m,re=tu((i.get(A)||Km).map(xe=>xe.getRealPlayer())).filter(xe=>{let we=xe;return we.element?we.element===A:!1}),oe=o.get(A),ge=a.get(A),ei=Ho(this._normalizer,E.keyframes,oe,ge),Je=this._buildPlayer(E,ei,re);if(E.subTimeline&&r&&C.add(A),te){let xe=new mn(t,c,A);xe.setRealPlayer(Je),p.push(xe)}return Je});p.forEach(E=>{Ee(this.playersByQueriedElement,E.element,[]).push(E),E.onDone(()=>Xm(this.playersByQueriedElement,E.element,E))}),x.forEach(E=>qe(E,Ko));let P=_t(R);return P.onDestroy(()=>{x.forEach(E=>Ti(E,Ko)),Xe(m,e.toStyles)}),C.forEach(E=>{Ee(r,E,[]).push(P)}),P}_buildPlayer(t,e,i){return e.length>0?this.driver.animate(t.element,e,t.duration,t.delay,t.easing,i):new ct(t.duration,t.delay)}},mn=class{namespaceId;triggerName;element;_player=new ct;_containsRealPlayer=!1;_queuedCallbacks=new Map;destroyed=!1;parentPlayer=null;markedForDestroy=!1;disabled=!1;queued=!0;totalTime=0;constructor(t,e,i){this.namespaceId=t,this.triggerName=e,this.element=i}setRealPlayer(t){this._containsRealPlayer||(this._player=t,this._queuedCallbacks.forEach((e,i)=>{e.forEach(r=>dr(t,i,void 0,r))}),this._queuedCallbacks.clear(),this._containsRealPlayer=!0,this.overrideTotalTime(t.totalTime),this.queued=!1)}getRealPlayer(){return this._player}overrideTotalTime(t){this.totalTime=t}syncPlayerEvents(t){let e=this._player;e.triggerCallback&&t.onStart(()=>e.triggerCallback("start")),t.onDone(()=>this.finish()),t.onDestroy(()=>this.destroy())}_queueEvent(t,e){Ee(this._queuedCallbacks,t,[]).push(e)}onDone(t){this.queued&&this._queueEvent("done",t),this._player.onDone(t)}onStart(t){this.queued&&this._queueEvent("start",t),this._player.onStart(t)}onDestroy(t){this.queued&&this._queueEvent("destroy",t),this._player.onDestroy(t)}init(){this._player.init()}hasStarted(){return this.queued?!1:this._player.hasStarted()}play(){!this.queued&&this._player.play()}pause(){!this.queued&&this._player.pause()}restart(){!this.queued&&this._player.restart()}finish(){this._player.finish()}destroy(){this.destroyed=!0,this._player.destroy()}reset(){!this.queued&&this._player.reset()}setPosition(t){this.queued||this._player.setPosition(t)}getPosition(){return this.queued?0:this._player.getPosition()}triggerCallback(t){let e=this._player;e.triggerCallback&&e.triggerCallback(t)}};function Xm(n,t,e){let i=n.get(t);if(i){if(i.length){let r=i.indexOf(e);i.splice(r,1)}i.length==0&&n.delete(t)}return i}function Zm(n){return n??null}function vr(n){return n&&n.nodeType===1}function Jm(n){return n=="start"||n=="done"}function Yl(n,t){let e=n.style.display;return n.style.display=t??"none",e}function Xl(n,t,e,i,r){let o=[];e.forEach(m=>o.push(Yl(m)));let a=[];i.forEach((m,p)=>{let x=new Map;m.forEach(C=>{let R=t.computeStyle(p,C,r);x.set(C,R),(!R||R.length==0)&&(p[Ze]=Ym,a.push(p))}),n.set(p,x)});let c=0;return e.forEach(m=>Yl(m,o[c++])),a}function Zl(n,t){let e=new Map;if(n.forEach(c=>e.set(c,[])),t.length==0)return e;let i=1,r=new Set(t),o=new Map;function a(c){if(!c)return i;let m=o.get(c);if(m)return m;let p=c.parentNode;return e.has(p)?m=p:r.has(p)?m=i:m=a(p),o.set(c,m),m}return t.forEach(c=>{let m=a(c);m!==i&&e.get(m).push(c)}),e}function qe(n,t){n.classList?.add(t)}function Ti(n,t){n.classList?.remove(t)}function eu(n,t,e){_t(e).onDone(()=>n.processLeaveNode(t))}function tu(n){let t=[];return oc(n,t),t}function oc(n,t){for(let e=0;er.add(o)):t.set(n,i),e.delete(n),!0}var Mi=class{_driver;_normalizer;_transitionEngine;_timelineEngine;_triggerCache={};onRemovalComplete=(t,e)=>{};constructor(t,e,i){this._driver=e,this._normalizer=i,this._transitionEngine=new ma(t.body,e,i),this._timelineEngine=new ca(t.body,e,i),this._transitionEngine.onRemovalComplete=(r,o)=>this.onRemovalComplete(r,o)}registerTrigger(t,e,i,r,o){let a=t+"-"+r,c=this._triggerCache[a];if(!c){let m=[],p=[],x=tc(this._driver,o,m,p);if(m.length)throw Ml(r,m);c=Gm(r,x,this._normalizer),this._triggerCache[a]=c}this._transitionEngine.registerTrigger(e,r,c)}register(t,e){this._transitionEngine.register(t,e)}destroy(t,e){this._transitionEngine.destroy(t,e)}onInsert(t,e,i,r){this._transitionEngine.insertNode(t,e,i,r)}onRemove(t,e,i){this._transitionEngine.removeNode(t,e,i)}disableAnimations(t,e){this._transitionEngine.markElementAsDisabled(t,e)}process(t,e,i,r){if(i.charAt(0)=="@"){let[o,a]=Uo(i),c=r;this._timelineEngine.command(o,e,a,c)}else this._transitionEngine.trigger(t,e,i,r)}listen(t,e,i,r,o){if(i.charAt(0)=="@"){let[a,c]=Uo(i);return this._timelineEngine.listen(a,e,c,o)}return this._transitionEngine.listen(t,e,i,r,o)}flush(t=-1){this._transitionEngine.flush(t)}get players(){return[...this._transitionEngine.players,...this._timelineEngine.players]}whenRenderingDone(){return this._transitionEngine.whenRenderingDone()}afterFlushAnimationsDone(t){this._transitionEngine.afterFlushAnimationsDone(t)}};function nu(n,t){let e=null,i=null;return Array.isArray(t)&&t.length?(e=ta(t[0]),t.length>1&&(i=ta(t[t.length-1]))):t instanceof Map&&(e=ta(t)),e||i?new ru(n,e,i):null}var ru=(()=>{class n{_element;_startStyles;_endStyles;static initialStylesByElement=new WeakMap;_state=0;_initialStyles;constructor(e,i,r){this._element=e,this._startStyles=i,this._endStyles=r;let o=n.initialStylesByElement.get(e);o||n.initialStylesByElement.set(e,o=new Map),this._initialStyles=o}start(){this._state<1&&(this._startStyles&&Xe(this._element,this._startStyles,this._initialStyles),this._state=1)}finish(){this.start(),this._state<2&&(Xe(this._element,this._initialStyles),this._endStyles&&(Xe(this._element,this._endStyles),this._endStyles=null),this._state=1)}destroy(){this.finish(),this._state<3&&(n.initialStylesByElement.delete(this._element),this._startStyles&&(At(this._element,this._startStyles),this._endStyles=null),this._endStyles&&(At(this._element,this._endStyles),this._endStyles=null),Xe(this._element,this._initialStyles),this._state=3)}}return n})();function ta(n){let t=null;return n.forEach((e,i)=>{ou(i)&&(t=t||new Map,t.set(i,e))}),t}function ou(n){return n==="display"||n==="position"}var Er=class{element;keyframes;options;_specialStyles;_onDoneFns=[];_onStartFns=[];_onDestroyFns=[];_duration;_delay;_initialized=!1;_finished=!1;_started=!1;_destroyed=!1;_finalKeyframe;_originalOnDoneFns=[];_originalOnStartFns=[];domPlayer;time=0;parentPlayer=null;currentSnapshot=new Map;constructor(t,e,i,r){this.element=t,this.keyframes=e,this.options=i,this._specialStyles=r,this._duration=i.duration,this._delay=i.delay||0,this.time=this._duration+this._delay}_onFinish(){this._finished||(this._finished=!0,this._onDoneFns.forEach(t=>t()),this._onDoneFns=[])}init(){this._buildPlayer(),this._preparePlayerBeforeStart()}_buildPlayer(){if(this._initialized)return;this._initialized=!0;let t=this.keyframes;this.domPlayer=this._triggerWebAnimation(this.element,t,this.options),this._finalKeyframe=t.length?t[t.length-1]:new Map;let e=()=>this._onFinish();this.domPlayer.addEventListener("finish",e),this.onDestroy(()=>{this.domPlayer.removeEventListener("finish",e)})}_preparePlayerBeforeStart(){this._delay?this._resetDomPlayerState():this.domPlayer.pause()}_convertKeyframesToObject(t){let e=[];return t.forEach(i=>{e.push(Object.fromEntries(i))}),e}_triggerWebAnimation(t,e,i){return t.animate(this._convertKeyframesToObject(e),i)}onStart(t){this._originalOnStartFns.push(t),this._onStartFns.push(t)}onDone(t){this._originalOnDoneFns.push(t),this._onDoneFns.push(t)}onDestroy(t){this._onDestroyFns.push(t)}play(){this._buildPlayer(),this.hasStarted()||(this._onStartFns.forEach(t=>t()),this._onStartFns=[],this._started=!0,this._specialStyles&&this._specialStyles.start()),this.domPlayer.play()}pause(){this.init(),this.domPlayer.pause()}finish(){this.init(),this._specialStyles&&this._specialStyles.finish(),this._onFinish(),this.domPlayer.finish()}reset(){this._resetDomPlayerState(),this._destroyed=!1,this._finished=!1,this._started=!1,this._onStartFns=this._originalOnStartFns,this._onDoneFns=this._originalOnDoneFns}_resetDomPlayerState(){this.domPlayer&&this.domPlayer.cancel()}restart(){this.reset(),this.play()}hasStarted(){return this._started}destroy(){this._destroyed||(this._destroyed=!0,this._resetDomPlayerState(),this._onFinish(),this._specialStyles&&this._specialStyles.destroy(),this._onDestroyFns.forEach(t=>t()),this._onDestroyFns=[])}setPosition(t){this.domPlayer===void 0&&this.init(),this.domPlayer.currentTime=t*this.time}getPosition(){return+(this.domPlayer.currentTime??0)/this.time}get totalTime(){return this._delay+this._duration}beforeDestroy(){let t=new Map;this.hasStarted()&&this._finalKeyframe.forEach((i,r)=>{r!=="offset"&&t.set(r,this._finished?i:gr(this.element,r))}),this.currentSnapshot=t}triggerCallback(t){let e=t==="start"?this._onStartFns:this._onDoneFns;e.forEach(i=>i()),e.length=0}},Tr=class{validateStyleProperty(t){return!0}validateAnimatableStyleProperty(t){return!0}containsElement(t,e){return $o(t,e)}getParentElement(t){return ur(t)}query(t,e,i){return qo(t,e,i)}computeStyle(t,e,i){return gr(t,e)}animate(t,e,i,r,o,a=[]){let c=r==0?"both":"forwards",m={duration:i,delay:r,fill:c};o&&(m.easing=o);let p=new Map,x=a.filter(P=>P instanceof Er);Gl(i,r)&&x.forEach(P=>{P.currentSnapshot.forEach((E,A)=>p.set(A,E))});let C=zl(e).map(P=>new Map(P));C=Hl(t,C,p);let R=nu(t,C);return new Er(t,C,m,R)}};var br="@",ac="@.disabled",Mr=class{namespaceId;delegate;engine;_onDestroy;\u0275type=0;constructor(t,e,i,r){this.namespaceId=t,this.delegate=e,this.engine=i,this._onDestroy=r}get data(){return this.delegate.data}destroyNode(t){this.delegate.destroyNode?.(t)}destroy(){this.engine.destroy(this.namespaceId,this.delegate),this.engine.afterFlushAnimationsDone(()=>{queueMicrotask(()=>{this.delegate.destroy()})}),this._onDestroy?.()}createElement(t,e){return this.delegate.createElement(t,e)}createComment(t){return this.delegate.createComment(t)}createText(t){return this.delegate.createText(t)}appendChild(t,e){this.delegate.appendChild(t,e),this.engine.onInsert(this.namespaceId,e,t,!1)}insertBefore(t,e,i,r=!0){this.delegate.insertBefore(t,e,i),this.engine.onInsert(this.namespaceId,e,t,r)}removeChild(t,e,i){this.parentNode(e)&&this.engine.onRemove(this.namespaceId,e,this.delegate)}selectRootElement(t,e){return this.delegate.selectRootElement(t,e)}parentNode(t){return this.delegate.parentNode(t)}nextSibling(t){return this.delegate.nextSibling(t)}setAttribute(t,e,i,r){this.delegate.setAttribute(t,e,i,r)}removeAttribute(t,e,i){this.delegate.removeAttribute(t,e,i)}addClass(t,e){this.delegate.addClass(t,e)}removeClass(t,e){this.delegate.removeClass(t,e)}setStyle(t,e,i,r){this.delegate.setStyle(t,e,i,r)}removeStyle(t,e,i){this.delegate.removeStyle(t,e,i)}setProperty(t,e,i){e.charAt(0)==br&&e==ac?this.disableAnimations(t,!!i):this.delegate.setProperty(t,e,i)}setValue(t,e){this.delegate.setValue(t,e)}listen(t,e,i,r){return this.delegate.listen(t,e,i,r)}disableAnimations(t,e){this.engine.disableAnimations(t,e)}},ua=class extends Mr{factory;constructor(t,e,i,r,o){super(e,i,r,o),this.factory=t,this.namespaceId=e}setProperty(t,e,i){e.charAt(0)==br?e.charAt(1)=="."&&e==ac?(i=i===void 0?!0:!!i,this.disableAnimations(t,i)):this.engine.process(this.namespaceId,t,e.slice(1),i):this.delegate.setProperty(t,e,i)}listen(t,e,i,r){if(e.charAt(0)==br){let o=au(t),a=e.slice(1),c="";return a.charAt(0)!=br&&([a,c]=su(a)),this.engine.listen(this.namespaceId,o,a,c,m=>{let p=m._data||-1;this.factory.scheduleListenerCallback(p,i,m)})}return this.delegate.listen(t,e,i,r)}};function au(n){switch(n){case"body":return document.body;case"document":return document;case"window":return window;default:return n}}function su(n){let t=n.indexOf("."),e=n.substring(0,t),i=n.slice(t+1);return[e,i]}var Dr=class{delegate;engine;_zone;_currentId=0;_microtaskId=1;_animationCallbacksBuffer=[];_rendererCache=new Map;_cdRecurDepth=0;constructor(t,e,i){this.delegate=t,this.engine=e,this._zone=i,e.onRemovalComplete=(r,o)=>{o?.removeChild(null,r)}}createRenderer(t,e){let i="",r=this.delegate.createRenderer(t,e);if(!t||!e?.data?.animation){let p=this._rendererCache,x=p.get(r);if(!x){let C=()=>p.delete(r);x=new Mr(i,r,this.engine,C),p.set(r,x)}return x}let o=e.id,a=e.id+"-"+this._currentId;this._currentId++,this.engine.register(a,t);let c=p=>{Array.isArray(p)?p.forEach(c):this.engine.registerTrigger(o,a,t,p.name,p)};return e.data.animation.forEach(c),new ua(this,a,r,this.engine)}begin(){this._cdRecurDepth++,this.delegate.begin&&this.delegate.begin()}_scheduleCountTask(){queueMicrotask(()=>{this._microtaskId++})}scheduleListenerCallback(t,e,i){if(t>=0&&te(i));return}let r=this._animationCallbacksBuffer;r.length==0&&queueMicrotask(()=>{this._zone.run(()=>{r.forEach(o=>{let[a,c]=o;a(c)}),this._animationCallbacksBuffer=[]})}),r.push([e,i])}end(){this._cdRecurDepth--,this._cdRecurDepth==0&&this._zone.runOutsideAngular(()=>{this._scheduleCountTask(),this.engine.flush(this._microtaskId)}),this.delegate.end&&this.delegate.end()}whenRenderingDone(){return this.engine.whenRenderingDone()}componentReplaced(t){this.engine.flush(),this.delegate.componentReplaced?.(t)}};var cu=(()=>{class n extends Mi{constructor(e,i,r){super(e,i,r)}ngOnDestroy(){this.flush()}static \u0275fac=function(i){return new(i||n)(Ce(Fi),Ce(Zt),Ce(Jt))};static \u0275prov=J({token:n,factory:n.\u0275fac})}return n})();function du(){return new xr}function mu(n,t,e){return new Dr(n,t,e)}var sc=[{provide:Jt,useFactory:du},{provide:Mi,useClass:cu},{provide:Ua,useFactory:mu,deps:[ts,Mi,ut]}],D0=[{provide:Zt,useClass:pa},{provide:Bt,useValue:"NoopAnimations"},...sc],uu=[{provide:Zt,useFactory:()=>new Tr},{provide:Bt,useFactory:()=>"BrowserAnimations"},...sc];function lc(){return ao("NgEagerAnimations"),[...uu]}var Rr=class n{constructor(t,e){this.http=t;this.snackBar=e}API_BASE="http://localhost:8080/projects";_activeProject$=new ve(null);activeProject$=this._activeProject$.asObservable();getAllProjects(){return this.http.get(`${this.API_BASE}/list/details`).pipe(ae(t=>this.handleError(t,"Error while loading the projects")))}getActiveProject(){return this.http.get(`${this.API_BASE}/current`).pipe(Q(t=>{this._activeProject$.next(t.name?t:null)}),ae(t=>this.handleError(t,"Error while retrieving the project")))}openProject(t){return this.http.post(`${this.API_BASE}/open`,t).pipe(Q(e=>{this._activeProject$.next(e),this.snackBar.open("Project opened","Close",{duration:3e3,panelClass:["snackbar-success"]})}),ae(e=>this.handleError(e,"Error while opening the project")))}createProject(t){return this.http.post(`${this.API_BASE}/create`,t).pipe(Q(e=>{this._activeProject$.next(e),this.snackBar.open("Project created","Close",{duration:3e3,panelClass:["snackbar-success"]})}),ae(e=>this.handleError(e,"Error while creating the project")))}deleteProject(t){return this.http.delete(`${this.API_BASE}/${t}`,{responseType:"text"})}updateProject(t,e){return console.log("OBJECT OF UPDATE : ",e),this.http.put(`${this.API_BASE}/${t}`,e).pipe(Q(i=>{console.log("Project updated:",i?.message??i)}),ae(i=>(console.error("Update project failed:",i),tt(()=>i))))}closeProject(){return this.http.post(`${this.API_BASE}/close`,{}).pipe(Q(()=>{this._activeProject$.next(null),this.snackBar.open("Project closed","Close",{duration:3e3,panelClass:["snackbar-info"]})}),ae(t=>this.handleError(t,"Error while closing the project")))}setActiveProject(t){this._activeProject$.next(t)}get currentActiveProject(){return this._activeProject$.value}handleError(t,e){let i=e;return t.status===400?i="Name of project is invalid or already exists":t.status===0?i="Impossible to reach the server.":t.error?.message&&(i=t.error.message),this.snackBar.open(i,"Fermer",{duration:5e3,panelClass:["snackbar-error"]}),tt(()=>new Error(i))}importBackUpProject(t){let e=new FormData;return e.append("file",t),this.http.post(`${this.API_BASE}/import-backup`,e)}importTurtleSource(t){let e=new FormData;return e.append("file",t),this.http.post(`${this.API_BASE}/import`,e)}exportInternalDataSource(){return Vt(this,null,function*(){return Zr(this.http.get(`${this.API_BASE}/export/internal`,{responseType:"blob"}))})}exportBackup(){return Vt(this,null,function*(){return Zr(this.http.get(`${this.API_BASE}/export/backup`,{responseType:"blob"}))})}static \u0275fac=function(e){return new(e||n)(Ce(ai),Ce(Tt))};static \u0275prov=J({token:n,factory:n.\u0275fac,providedIn:"root"})};var hu=["fileInput"],fu=["zipInput"],gu=(n,t)=>t.name;function _u(n,t){if(n&1){let e=T();s(0,"div",12),g(1,"span",47),s(2,"span",15),u(3),l(),s(4,"button",48),_("click",function(){y(e);let r=h();return v(r.onCloseProject())}),b(),s(5,"svg",19),g(6,"path",49),l()()()}if(n&2){let e=h();d(3),j(e.activeProject.name)}}function yu(n,t){if(n&1&&(s(0,"div",20),g(1,"span",50),s(2,"span"),u(3,"Projet actif : "),s(4,"strong"),u(5),l()()()),n&2){let e=h();d(5),j(e.activeProject.name)}}function vu(n,t){if(n&1&&(s(0,"span",79),u(1),l()),n&2){let e=h().$implicit;f("title",e.description),d(),j(e.description)}}function bu(n,t){n&1&&(s(0,"span",80),u(1,"No description"),l())}function xu(n,t){if(n&1&&(u(0),Re(1,"date")),n&2){let e=h().$implicit;D(" ",pt(1,1,e.created,"dd/MM/yyyy")," ")}}function wu(n,t){n&1&&(s(0,"span",82),u(1,"-"),l())}function Cu(n,t){if(n&1&&(u(0),Re(1,"date")),n&2){let e=h().$implicit;D(" ",pt(1,1,e.lastModified,"dd/MM/yyyy HH:mm")," ")}}function Su(n,t){n&1&&(s(0,"span",82),u(1,"-"),l())}function ku(n,t){n&1&&(s(0,"span",83),g(1,"span",94),u(2," Active "),l())}function Eu(n,t){n&1&&(s(0,"span",84),u(1," Closed "),l())}function Tu(n,t){if(n&1){let e=T();s(0,"tr",73),_("click",function(){let r=y(e).$implicit,o=h(2);return v(o.selectProject(r))}),s(1,"td",74)(2,"div",64)(3,"div",75),b(),s(4,"svg",76),g(5,"path",8),l()(),S(),s(6,"span",77),u(7),l()()(),s(8,"td",78),w(9,vu,2,2,"span",79)(10,bu,2,0,"span",80),l(),s(11,"td",81),w(12,xu,2,4)(13,wu,2,0,"span",82),l(),s(14,"td",81),w(15,Cu,2,4)(16,Su,2,0,"span",82),l(),s(17,"td",74),w(18,ku,3,0,"span",83)(19,Eu,2,0,"span",84),l(),s(20,"td",85)(21,"div",86)(22,"button",87),_("click",function(r){let o=y(e).$implicit;return h(2).onOpenProject(o),v(r.stopPropagation())}),b(),s(23,"svg",88),g(24,"path",89),l(),u(25," Open "),l(),S(),s(26,"button",90),_("click",function(r){let o=y(e).$implicit;return h(2).onDeleteProject(o.name),v(r.stopPropagation())}),b(),s(27,"svg",88),g(28,"path",91),l(),u(29," Delete "),l(),S(),s(30,"button",92),_("click",function(r){let o=y(e).$implicit;return h(2).onImportFile(o),v(r.stopPropagation())}),b(),s(31,"svg",88),g(32,"path",93),l(),u(33," Import "),l()()()()}if(n&2){let e=t.$implicit,i=h(2);I("bg-blue-50",(i.selectedProject==null?null:i.selectedProject.name)===e.name)("border-l-4",(i.activeProject==null?null:i.activeProject.name)===e.name)("border-l-green-500",(i.activeProject==null?null:i.activeProject.name)===e.name),d(7),j(e.name),d(2),W(e.description?9:10),d(3),W(e.created?12:13),d(3),W(e.lastModified?15:16),d(3),W(e.isOpen?18:19),d(4),f("disabled",(i.activeProject==null?null:i.activeProject.name)===e.name||i.isLoading)("title",(i.activeProject==null?null:i.activeProject.name)===e.name?"Project already open":"Open Project"),d(4),f("disabled",i.isLoading),d(4),f("disabled",i.isLoading)}}function Mu(n,t){if(n&1){let e=T();s(0,"button",95),_("click",function(){let r=y(e).$implicit,o=h(2);return v(o.goToPage(r))}),u(1),l()}if(n&2){let e=t.$implicit,i=h(2);I("bg-blue-600",i.currentPage===e)("text-white",i.currentPage===e)("border-blue-600",i.currentPage===e),d(),D(" ",e+1," ")}}function Du(n,t){if(n&1){let e=T();s(0,"div",41)(1,"div",51)(2,"h2",52),b(),s(3,"svg",53),g(4,"path",8),l(),u(5," Projects RDF "),l(),S(),s(6,"span",54),u(7),l()(),s(8,"div",55)(9,"table",56)(10,"thead",57)(11,"tr")(12,"th",58),u(13,"Name"),l(),s(14,"th",58),u(15,"Description"),l(),s(16,"th",58),u(17,"Created on"),l(),s(18,"th",58),u(19,"Last Modified on"),l(),s(20,"th",58),u(21,"Status"),l(),s(22,"th",59),u(23,"Actions"),l()()(),s(24,"tbody",60),Oi(25,Tu,34,15,"tr",61,gu),l()()(),s(27,"div",62)(28,"div",63),u(29," Affichage "),s(30,"strong"),u(31),l(),u(32," \u2013 "),s(33,"strong"),u(34),l(),u(35," sur "),s(36,"strong"),u(37),l()(),s(38,"div",64)(39,"button",65),_("click",function(){y(e);let r=h();return v(r.prevPage())}),b(),s(40,"svg",66),g(41,"path",67),l()(),S(),s(42,"div",68),Oi(43,Mu,2,7,"button",69,gn),l(),s(45,"button",65),_("click",function(){y(e);let r=h();return v(r.nextPage())}),b(),s(46,"svg",66),g(47,"path",70),l()(),S(),s(48,"select",71),de("ngModelChange",function(r){y(e);let o=h();return ce(o.pageSize,r)||(o.pageSize=r),v(r)}),_("change",function(){y(e);let r=h();return v(r.onPageSizeChange())}),s(49,"option",72),u(50,"5 / page"),l(),s(51,"option",72),u(52,"10 / page"),l(),s(53,"option",72),u(54,"20 / page"),l()()()()()}if(n&2){let e=h();d(7),D("",e.filteredProjects.length," results(s)"),d(18),Li(e.paginatedProjects),d(6),j(e.paginationStart+1),d(3),j(e.paginationEnd),d(3),j(e.filteredProjects.length),d(2),f("disabled",e.currentPage===0),d(4),Li(e.pageNumbers),d(2),f("disabled",e.currentPage>=e.totalPages-1),d(3),le("ngModel",e.pageSize),d(),f("value",5),d(2),f("value",10),d(2),f("value",20)}}function Ru(n,t){if(n&1){let e=T();s(0,"div",42),b(),s(1,"svg",96),g(2,"path",8),l(),S(),s(3,"h3",97),u(4,"Aucun projet"),l(),s(5,"p",98),u(6,"Cr\xE9ez votre premier projet RDF pour commencer"),l(),s(7,"button",99),_("click",function(){y(e);let r=h();return v(r.openCreateModal())}),b(),s(8,"svg",19),g(9,"path",23),l(),u(10," Nouveau Projet "),l()()}}function Pu(n,t){n&1&&(s(0,"div",43),b(),s(1,"svg",100),g(2,"circle",101)(3,"path",102),l(),S(),s(4,"span",103),u(5,"Chargement des projets..."),l()())}function Iu(n,t){n&1&&(s(0,"div",117),u(1," Name is required and must contain only letters, numbers, dashes, and underscores. "),l())}function Au(n,t){n&1&&(s(0,"div",117),u(1," A URL is required for the project prefix. "),l())}function Ou(n,t){n&1&&(b(),s(0,"svg",124),g(1,"circle",101)(2,"path",102),l())}function Lu(n,t){n&1&&(b(),s(0,"svg",19),g(1,"path",89),l())}function Fu(n,t){if(n&1){let e=T();s(0,"div",104),_("click",function(){y(e);let r=h();return v(r.closeCreateModal())}),s(1,"div",105),_("click",function(r){return y(e),v(r.stopPropagation())}),s(2,"div",106)(3,"div",11),b(),s(4,"svg",7),g(5,"path",8),l(),S(),s(6,"h2",107),u(7,"New Project RDF"),l()(),s(8,"button",108),_("click",function(){y(e);let r=h();return v(r.closeCreateModal())}),b(),s(9,"svg",109),g(10,"path",49),l()()(),S(),s(11,"div",110)(12,"form",111),_("ngSubmit",function(){y(e);let r=h();return v(r.onSubmitProject())}),s(13,"div",112)(14,"div")(15,"label",113),u(16," Project's Name "),s(17,"span",114),u(18,"*"),l()(),g(19,"input",115),s(20,"p",116),u(21,"Must contain only letters, numbers, dashes, and underscores."),l(),w(22,Iu,2,0,"div",117),l(),s(23,"div")(24,"label",113),u(25," Prefix for future entity\u2019s IRI generation "),s(26,"span",114),u(27,"*"),l(),s(28,"div")(29,"span",118),u(30," If your project has a stable URL in a Language Archive, you can enter it here. Otherwise, you can leave the default IRI generation scheme. "),l()()(),g(31,"input",119),w(32,Au,2,0,"div",117),l(),s(33,"div")(34,"label",113),u(35,"Description"),l(),s(36,"textarea",120),u(37," "),l()()(),s(38,"div",121)(39,"button",122),_("click",function(){y(e);let r=h();return v(r.closeCreateModal())}),u(40," Cancel "),l(),s(41,"button",123),w(42,Ou,3,0,":svg:svg",124)(43,Lu,2,0,":svg:svg",19),u(44," Create & Open "),l()()()()()()}if(n&2){let e,i,r,o,a=h();d(12),f("formGroup",a.projectForm),d(7),I("border-red-300",((e=a.projectForm.get("name"))==null?null:e.invalid)&&((e=a.projectForm.get("name"))==null?null:e.touched)),d(3),W((i=a.projectForm.get("name"))!=null&&i.invalid&&((i=a.projectForm.get("name"))!=null&&i.touched)?22:-1),d(9),I("border-red-300",((r=a.projectForm.get("prefix"))==null?null:r.invalid)&&((r=a.projectForm.get("prefix"))==null?null:r.touched)),d(),W((o=a.projectForm.get("prefix"))!=null&&o.invalid&&((o=a.projectForm.get("prefix"))!=null&&o.touched)?32:-1),d(9),f("disabled",!a.projectForm.valid||a.isLoading),d(),W(a.isLoading?42:43)}}function Nu(n,t){n&1&&(s(0,"span",20),g(1,"span",146),u(2," Active Project "),l())}function ju(n,t){n&1&&(s(0,"span",131),g(1,"span",147),u(2," Closed "),l())}function Vu(n,t){if(n&1){let e=T();s(0,"input",148),_("ngModelChange",function(){y(e);let r=h(2);return v(r.onProjectChange(r.selectedProject))}),de("ngModelChange",function(r){y(e);let o=h(2);return ce(o.selectedProject.name,r)||(o.selectedProject.name=r),v(r)}),l()}if(n&2){let e=h(2);le("ngModel",e.selectedProject.name)}}function zu(n,t){if(n&1){let e=T();s(0,"input",148),de("ngModelChange",function(r){y(e);let o=h(2);return ce(o.selectedProject.name,r)||(o.selectedProject.name=r),v(r)}),l()}if(n&2){let e=h(2);le("ngModel",e.selectedProject.name)}}function Bu(n,t){if(n&1){let e=T();s(0,"div")(1,"label",113),u(2,"Description"),l(),s(3,"textarea",149),de("ngModelChange",function(r){y(e);let o=h(2);return ce(o.selectedProject.description,r)||(o.selectedProject.description=r),v(r)}),u(4,`
+ `),l()()}if(n&2){let e=h(2);d(3),le("ngModel",e.selectedProject.description)}}function Gu(n,t){if(n&1){let e=T();s(0,"div")(1,"label",113),u(2,"Prefix"),l(),s(3,"div",132)(4,"input",150),de("ngModelChange",function(r){y(e);let o=h(2);return ce(o.selectedProject.prefix,r)||(o.selectedProject.prefix=r),v(r)}),l(),s(5,"button",134),_("click",function(){y(e);let r=h(2);return v(r.copyToClipboard(r.selectedProject.prefix))}),b(),s(6,"svg",19),g(7,"path",135),l()()()()}if(n&2){let e=h(2);d(4),le("ngModel",e.selectedProject.prefix)}}function Hu(n,t){if(n&1&&(u(0),Re(1,"date")),n&2){let e=h(2);D(" ",pt(1,1,e.selectedProject.created,"dd/MM/yyyy")," ")}}function Uu(n,t){n&1&&(s(0,"span",82),u(1,"-"),l())}function $u(n,t){if(n&1&&(u(0),Re(1,"date")),n&2){let e=h(2);D(" ",pt(1,1,e.selectedProject.lastModified,"dd/MM/yyyy HH:mm")," ")}}function qu(n,t){n&1&&(s(0,"span",82),u(1,"-"),l())}function Wu(n,t){if(n&1){let e=T();s(0,"button",151),_("click",function(){y(e);let r=h(2);return v(r.onOpenProject(r.selectedProject))}),b(),s(1,"svg",19),g(2,"path",89),l(),u(3),l()}if(n&2){let e=h(2);f("disabled",(e.activeProject==null?null:e.activeProject.name)===e.selectedProject.name||e.isLoading),d(3),D(" ",(e.activeProject==null?null:e.activeProject.name)===e.selectedProject.name?"Project Already Active":"Open project"," ")}}function Qu(n,t){if(n&1){let e=T();s(0,"button",152),_("click",function(){y(e);let r=h(2);return v(r.goToSources())}),b(),s(1,"svg",19),g(2,"path",153),l(),u(3," Manage Data Sources "),l(),S(),s(4,"button",154),_("click",function(r){return y(e),h(2).onExportInternal(),v(r.stopPropagation())}),b(),s(5,"svg",155),g(6,"path",156),l(),u(7," Export Internal DataSource "),l(),S(),s(8,"button",157),_("click",function(r){return y(e),h(2).onExportBackup(),v(r.stopPropagation())}),b(),s(9,"svg",19),g(10,"path",158),l(),u(11," Export Backup Project "),l(),S(),s(12,"button",159),_("click",function(){y(e);let r=h(2);return v(r.onCloseProject())}),b(),s(13,"svg",19),g(14,"path",160),l(),u(15," Close Project "),l()}if(n&2){let e=h(2);d(4),f("disabled",e.isLoading),d(4),f("disabled",e.isLoading)}}function Ku(n,t){if(n&1){let e=T();s(0,"aside",46)(1,"div",125)(2,"div",11),b(),s(3,"svg",53),g(4,"path",8),l(),S(),s(5,"h2",126),u(6),l()(),s(7,"button",127),_("click",function(){y(e);let r=h();return v(r.closeDetail())}),b(),s(8,"svg",128),g(9,"path",49),l()()(),S(),s(10,"div",129)(11,"div")(12,"label",130),u(13,"Status"),l(),w(14,Nu,3,0,"span",20)(15,ju,3,0,"span",131),l(),s(16,"div")(17,"label",113),u(18,"Project name"),l(),s(19,"div",132),w(20,Vu,1,1,"input",133)(21,zu,1,1,"input",133),s(22,"button",134),_("click",function(){let r;y(e);let o=h();return v(o.copyToClipboard((r=o.selectedProject.name)!==null&&r!==void 0?r:""))}),b(),s(23,"svg",19),g(24,"path",135),l()()()(),w(25,Bu,5,1,"div",136)(26,Gu,8,1,"div",136),S(),s(27,"div",137)(28,"div",138)(29,"label",139),u(30,"Created on"),l(),s(31,"p",140),w(32,Hu,2,4)(33,Uu,2,0,"span",82),l()(),s(34,"div",138)(35,"label",139),u(36,"Updated on "),l(),s(37,"p",140),w(38,$u,2,4)(39,qu,2,0,"span",82),l()()(),s(40,"div",141)(41,"button",142),_("click",function(){y(e);let r=h();return v(r.updateProject())}),b(),s(42,"svg",19),g(43,"path",143),l(),u(44," Update Project "),l(),w(45,Wu,4,2,"button",144)(46,Qu,16,2),S(),s(47,"button",145),_("click",function(){y(e);let r=h();return v(r.onDeleteProject(r.selectedProject.name))}),b(),s(48,"svg",19),g(49,"path",91),l(),u(50," Delete Project "),l()()()()}if(n&2){let e=h();d(6),j(e.selectedProject.name),d(8),W((e.activeProject==null?null:e.activeProject.name)===e.selectedProject.name?14:15),d(6),W((e.selectedProject==null?null:e.selectedProject.name)===(e.activeProject==null?null:e.activeProject.name)?20:21),d(5),f("ngIf",e.selectedProject),d(),f("ngIf",e.selectedProject),d(6),W(e.selectedProject.created?32:33),d(6),W(e.selectedProject.lastModified?38:39),d(3),f("disabled",e.isLoading||!e.isProjectDirty()),d(4),W((e.selectedProject==null?null:e.selectedProject.name)===e.originalProject.name?45:-1),d(),W((e.activeProject==null?null:e.activeProject.name)===e.originalProject.name?46:-1),d(),f("disabled",e.isLoading)}}var Pr=class n{constructor(t,e,i,r){this.fb=t;this.projectService=e;this.router=i;this.snackBar=r}destroy$=new _e;projects=[];filteredProjects=[];paginatedProjects=[];activeProject=null;selectedProject=null;originalProject=null;isLoading=!1;showCreateModal=!1;projectForm;searchTerm="";sortField="lastModified";sortAsc=!1;currentPage=0;pageSize=10;fileInput;zipInput;pendingImportProject=null;onImportFile(t){if(this.activeProject?.name!==t.name){alert(`Open "${t.name}" first before importing into it.`);return}this.pendingImportProject=t,this.fileInput.nativeElement.value="",this.fileInput.nativeElement.click()}onFileSelected(t){let i=t.target.files?.[0];!i||!this.pendingImportProject||(this.isLoading=!0,this.projectService.importTurtleSource(i).subscribe({next:r=>{this.isLoading=!1,alert("Imported triples into internal datasource .")},error:r=>{this.isLoading=!1;let o=r.error?.lineNumber?`Line ${r.error.lineNumber}, column ${r.error.columnNumber}: ${r.error.message}`:r.error?.message??"Import failed.";alert(o)}}))}onBackupSelected(t){let i=t.target.files?.[0];i&&(this.isLoading=!0,this.projectService.importBackUpProject(i).subscribe({next:r=>{this.isLoading=!1,alert(r.message??"Imported backup project."),this.loadAll()},error:r=>{this.isLoading=!1,alert("Error: "+(r.error?.message??"Import failed."))}}))}onImportBackUpProject(t){this.pendingImportProject=t,this.zipInput.nativeElement.value="",this.zipInput.nativeElement.click()}saveViaElectron(t,e){return Vt(this,null,function*(){let i=yield t.arrayBuffer(),r=yield window.electronAPI.saveFile(new Uint8Array(i),e);if(!r.success){r.canceled||console.error("Save failed:",r.error);return}this.snackBar.open("File saved successfully.","Close",{duration:3e3})})}saveViaBrowser(t,e){if(!t||t.size===0){console.error("Export failed: empty blob received"),this.snackBar.open("Export failed: no data received.","Close",{duration:5e3});return}try{let i=URL.createObjectURL(t),r=document.createElement("a");r.href=i,r.download=e,document.body.appendChild(r),r.click(),document.body.removeChild(r),URL.revokeObjectURL(i)}catch(i){console.error("Export failed:",i),this.snackBar.open("Export failed. See console for details.","Close",{duration:5e3})}}onExportInternal(){return Vt(this,null,function*(){try{let t=yield this.projectService.exportInternalDataSource(),e=`${this.activeProject?.name}-internal-export.ttl`;!!window.electronAPI?yield this.saveViaElectron(t,e):this.saveViaBrowser(t,e)}catch(t){console.error("Export internal failed:",t),this.snackBar.open("Export failed. See console for details.","Close",{duration:5e3})}})}onExportBackup(){return Vt(this,null,function*(){try{let t=yield this.projectService.exportBackup(),e=`${this.activeProject?.name}-backup.zip`;!!window.electronAPI?yield this.saveViaElectron(t,e):this.saveViaBrowser(t,e)}catch(t){console.error("Export backup failed:",t),this.snackBar.open("Export failed. See console for details.","Close",{duration:5e3})}})}ngOnInit(){this.buildForm(),this.loadAll(),this.projectService.activeProject$.pipe(ue(this.destroy$)).subscribe(t=>this.activeProject=t),this.projectForm.get("name")?.valueChanges.subscribe(t=>{this.projectForm.get("prefix")?.value.startsWith("http://fr.cnrs.lacito.FieldArchive/")&&this.projectForm.patchValue({prefix:"http://fr.cnrs.lacito.FieldArchive/"+t})}),this.projectForm.get("prefix")?.valueChanges.subscribe(t=>{t===""&&this.projectForm.patchValue({prefix:"http://fr.cnrs.lacito.FieldArchive/"})})}goToFiles(){this.router.navigate(["/files"])}ngOnDestroy(){this.destroy$.next(),this.destroy$.complete()}buildForm(){this.projectForm=this.fb.group({name:["",[Pe.required,Pe.pattern(/^[a-zA-Z0-9_-]+$/)]],description:[""],persistent:[!0],prefix:["http://fr.cnrs.lacito.FieldArchive/",[Pe.required,Pe.pattern(/^(https?:\/\/)?([\da-z\.-]+)\.([a-z]{2,6})([\/\w \.-]*)*\/?$/)]]})}loadAll(){this.isLoading=!0,this.projectService.getAllProjects().pipe(ue(this.destroy$),Ke(()=>this.isLoading=!1)).subscribe({next:t=>{this.projects=t,console.log("PROJECTS : ",t),this.applyFilters()},error:()=>{}}),this.projectService.getActiveProject().pipe(ue(this.destroy$)).subscribe({error:()=>{}})}onProjectChange(t){console.log("CHANGED PROJECT : ",t),this.projectService.setActiveProject(t),this.selectedProject=structuredClone(t)}updateProject(){!this.selectedProject||!this.originalProject||this.isLoading||this.projectService.updateProject(this.originalProject.name,{name:this.selectedProject.name,description:this.selectedProject.description}).subscribe({next:t=>{this.snackBar.open("\u2705 Project was successfully updated.","Close",{duration:5e3,horizontalPosition:"center",verticalPosition:"top",panelClass:["snackbar-success"]})},error:t=>{console.log("Error :",t),this.snackBar.open(`Failed to update project : "${this.selectedProject?.name}".`,"Close",{duration:5e3,horizontalPosition:"center",verticalPosition:"top",panelClass:["snackbar-error"]})}})}onDeleteProject(t){!t||this.isLoading||!confirm(`Are you sure you want to delete "${t}"?`)||this.projectService.deleteProject(t).subscribe({next:i=>{console.log("Success:",i),this.snackBar.open("\u2705 Project was successfully deleted.","Close",{duration:5e3,horizontalPosition:"center",verticalPosition:"top",panelClass:["snackbar-success"]}),this.closeDetail(),this.loadAll()},error:i=>{console.error("Error:",i),this.snackBar.open(`Failed to delete project : "${this.selectedProject?.name}".`,"Close",{duration:5e3,horizontalPosition:"right",verticalPosition:"bottom",panelClass:["snackbar-error"]})}})}onOpenProject(t){!t.name||this.isLoading||(this.isLoading=!0,this.projectService.openProject({name:t.name,persistent:!0,prefix:t.prefix}).pipe(ue(this.destroy$),Ke(()=>this.isLoading=!1)).subscribe({next:()=>this.router.navigate(["/gestion-ressources"]),error:()=>{}}))}onCloseProject(){this.isLoading||(this.isLoading=!0,this.projectService.closeProject().pipe(ue(this.destroy$),Ke(()=>this.isLoading=!1)).subscribe({next:()=>{this.selectedProject=null,this.loadAll()},error:()=>{}}))}refreshAll(){this.loadAll()}openCreateModal(){this.projectForm.reset({persistent:!0,name:"",description:"",prefix:"http://fr.cnrs.lacito.FieldArchive/"}),this.showCreateModal=!0}closeCreateModal(){this.showCreateModal=!1}onSubmitProject(){if(!this.projectForm.valid||this.isLoading)return;let{name:t,description:e,persistent:i,prefix:r}=this.projectForm.value;this.isLoading=!0,this.projectService.createProject({name:t,description:e,persistent:i,prefix:r}).pipe(ue(this.destroy$),Ke(()=>this.isLoading=!1)).subscribe({next:()=>{this.closeCreateModal(),this.loadAll()},error:()=>{}})}goToSources(){this.router.navigate(["/gestion-sources"])}selectProject(t){if(this.selectedProject?.name===t.name){this.selectedProject=null,this.originalProject=null;return}this.selectedProject=structuredClone(t),this.originalProject=structuredClone(t)}closeDetail(){this.selectedProject=null,this.originalProject=null}isProjectDirty(){return!this.selectedProject||!this.originalProject?!1:this.selectedProject.name!==this.originalProject.name||this.selectedProject.description!==this.originalProject.description}onSearch(){this.currentPage=0,this.applyFilters()}onSort(){this.currentPage=0,this.applyFilters()}toggleSortOrder(){this.sortAsc=!this.sortAsc,this.applyFilters()}applyFilters(){let t=[...this.projects];if(this.searchTerm.trim()){let e=this.searchTerm.toLowerCase();t=t.filter(i=>i.name?.toLowerCase().includes(e)||i.description?.toLowerCase().includes(e))}t.sort((e,i)=>{let r=(this.sortField==="name"?e.name:this.sortField==="created"?e.created:e.lastModified)??"",o=(this.sortField==="name"?i.name:this.sortField==="created"?i.created:i.lastModified)??"";return this.sortAsc?r.localeCompare(o):o.localeCompare(r)}),this.filteredProjects=t,this.updatePagination()}get totalPages(){return Math.max(1,Math.ceil(this.filteredProjects.length/this.pageSize))}get pageNumbers(){return Array.from({length:this.totalPages},(t,e)=>e)}get paginationStart(){return this.currentPage*this.pageSize}get paginationEnd(){return Math.min(this.paginationStart+this.pageSize,this.filteredProjects.length)}updatePagination(){this.paginatedProjects=this.filteredProjects.slice(this.paginationStart,this.paginationEnd)}prevPage(){this.currentPage>0&&(this.currentPage--,this.updatePagination())}nextPage(){this.currentPage0?60:-1),d(),W(i.projects.length===0&&!i.isLoading?61:-1),d(),W(i.isLoading&&i.projects.length===0?62:-1),d(3),W(i.showCreateModal?65:-1),d(),W(i.selectedProject?66:-1))},dependencies:[be,He,oi,rt,wn,li,ci,Ct,si,St,xn,kt,Et,Cn,Sn,mi],styles:["@keyframes _ngcontent-%COMP%_fade-in{0%{opacity:0}to{opacity:1}}@keyframes _ngcontent-%COMP%_slide-in{0%{transform:translate(100%);opacity:0}to{transform:translate(0);opacity:1}}@keyframes _ngcontent-%COMP%_slide-up{0%{transform:translateY(20px);opacity:0}to{transform:translateY(0);opacity:1}}.animate-fade-in[_ngcontent-%COMP%]{animation:_ngcontent-%COMP%_fade-in .25s ease-in-out}.animate-slide-in[_ngcontent-%COMP%]{animation:_ngcontent-%COMP%_slide-in .3s ease-out}.animate-slide-up[_ngcontent-%COMP%]{animation:_ngcontent-%COMP%_slide-up .25s ease-out} .snackbar-success{background:#10b981!important;color:#fff!important} .snackbar-error{background:#ef4444!important;color:#fff!important} .snackbar-warning{background:#f59e0b!important;color:#fff!important} .snackbar-info{background:#3b82f6!important;color:#fff!important}[_ngcontent-%COMP%]::-webkit-scrollbar{width:8px;height:8px}[_ngcontent-%COMP%]::-webkit-scrollbar-track{background:#f1f5f9}[_ngcontent-%COMP%]::-webkit-scrollbar-thumb{background:#cbd5e1;border-radius:4px}[_ngcontent-%COMP%]::-webkit-scrollbar-thumb:hover{background:#94a3b8}tr.group[_ngcontent-%COMP%]:hover .opacity-0[_ngcontent-%COMP%]{opacity:1}tr.border-l-4[_ngcontent-%COMP%]{border-left:4px solid #22c55e}@media (max-width: 768px){.w-96[_ngcontent-%COMP%]{width:100vw}}"]})};var mc=(()=>{class n{static \u0275fac=function(i){return new(i||n)};static \u0275mod=X({type:n});static \u0275inj=Y({imports:[ee,ee]})}return n})();var Lt=(()=>{class n{static \u0275fac=function(i){return new(i||n)};static \u0275mod=X({type:n});static \u0275inj=Y({imports:[ee,En,ee]})}return n})();var uc=(()=>{class n{static \u0275fac=function(i){return new(i||n)};static \u0275mod=X({type:n});static \u0275inj=Y({})}return n})();var pc=(()=>{class n{static \u0275fac=function(i){return new(i||n)};static \u0275mod=X({type:n});static \u0275inj=Y({imports:[ee,Lt,Lt,uc,ee]})}return n})();var Ir=(()=>{class n{static \u0275fac=function(i){return new(i||n)};static \u0275mod=X({type:n});static \u0275inj=Y({imports:[ee]})}return n})();var ga=(()=>{class n{static \u0275fac=function(i){return new(i||n)};static \u0275mod=X({type:n});static \u0275inj=Y({imports:[Tn,ee,Ir]})}return n})();var hc=new ne("mat-select-scroll-strategy",{providedIn:"root",factory:()=>{let n=k(di);return()=>n.scrollStrategies.reposition()}});function fc(n){return()=>n.scrollStrategies.reposition()}var gc={provide:hc,deps:[di],useFactory:fc};var _a=(()=>{class n{static \u0275fac=function(i){return new(i||n)};static \u0275mod=X({type:n});static \u0275inj=Y({providers:[gc],imports:[Dn,ga,ee,Mn,Lt,ga,ee]})}return n})();var _c=(()=>{class n{static \u0275fac=function(i){return new(i||n)};static \u0275mod=X({type:n});static \u0275inj=Y({imports:[_s]})}return n})();var yc=(()=>{class n{static \u0275fac=function(i){return new(i||n)};static \u0275mod=X({type:n});static \u0275inj=Y({imports:[ee,_c,ee]})}return n})();var ya=20;var vc=new ne("mat-tooltip-scroll-strategy",{providedIn:"root",factory:()=>{let n=k(di);return()=>n.scrollStrategies.reposition({scrollThrottle:ya})}});function bc(n){return()=>n.scrollStrategies.reposition({scrollThrottle:ya})}var xc={provide:vc,deps:[di],useFactory:bc};var va=(()=>{class n{static \u0275fac=function(i){return new(i||n)};static \u0275mod=X({type:n});static \u0275inj=Y({providers:[xc],imports:[cs,Dn,ee,ee,Mn]})}return n})();var Ar=class n{constructor(t){this.http=t;console.log("\u{1F310} DataSourceHttpService initialized")}apiUrl="http://localhost:8080/datasources";dataSourcesSubject=new ve([]);dataSources$=this.dataSourcesSubject.asObservable();getAllDataSources(){return console.log("\u{1F4E1} GET /datasources"),this.http.get(this.apiUrl).pipe(U(t=>this.mapBackendToFrontend(t)),Q(t=>{console.log("\u2705 Received sources:",t),this.dataSourcesSubject.next(t)}),ae(this.handleError))}createInternalSource(t){console.log("\u{1F4E1} POST /datasources/internal",t);let e={shortName:t.shortName,name:t.name,description:t.description||""};return this.http.post(`${this.apiUrl}/internal`,e).pipe(je(()=>this.http.get(`${this.apiUrl}/${t.shortName}`)),U(i=>this.mapSingleBackendToFrontend(i)),Q(i=>{console.log("\u2705 Internal source created:",i),this.refreshDataSources()}),ae(this.handleError))}createExternalSource(t){console.log("\u{1F4E1} POST /datasources/external",t);let e={shortName:t.shortName,name:t.name,description:t.description||"",sourceTool:t.tool||"",sourceLocation:t.url||""};return this.http.post(`${this.apiUrl}/external`,e).pipe(U(i=>this.mapSingleBackendToFrontend(i)),Q(i=>{console.log("\u2705 External source created:",i),this.refreshDataSources()}),ae(this.handleError))}updateDataSource(t,e){console.log(`\u{1F4E1} PUT /datasources/${t}`,e);let i={longName:e.name,description:e.description};return console.log("Payload envoy\xE9:",i),this.http.put(`${this.apiUrl}/${t}`,i).pipe(U(r=>this.mapSingleBackendToFrontend(r)),Q(r=>{console.log("\u2705 Source updated:",r),this.refreshDataSources()}),ae(this.handleError))}deleteDataSource(t){return console.log(`\u{1F4E1} DELETE /datasources/${t}`),this.http.delete(`${this.apiUrl}/${t}`).pipe(Q(()=>{console.log("\u2705 Source deleted"),this.refreshDataSources()}),ae(this.handleError))}syncExternalSource(t){return console.log(`\u{1F4E1} POST /datasources/${t}/sync`),this.http.post(`${this.apiUrl}/${t}/sync`,{}).pipe(Q(()=>{console.log("\u2705 Source synchronized"),this.refreshDataSources()}),ae(this.handleError))}mapBackendToFrontend(t){return t.map(e=>this.mapSingleBackendToFrontend(e))}mapSingleBackendToFrontend(t){if(console.log("\u{1F504} Mapping source from backend:",t),!t)return console.error("\u274C Source is null or undefined"),{id:"",shortName:"",name:"",description:"",sourceType:"INTERNAL",graphIRI:"",editable:!1};let i=(t.type||t.sourceType||t.datasourceType||"INTERNAL").toString().toUpperCase(),r={id:t.shortName||t.id||"",shortName:t.shortName||"",name:t.longName||t.name||t.shortName||"",description:t.description||"",sourceType:i,graphIRI:t.graphIri||t.graphIRI||t.graphUri||`urn:datasource:${t.shortName}`,editable:t.editable!==!1,url:t.sourceLocation||t.location||t.url,tool:t.sourceTool||t.tool,lastSyncDate:t.lastSync||t.lastSyncDate?new Date(t.lastSync||t.lastSyncDate):void 0,previousImportDates:t.previousSyncs?t.previousSyncs.map(o=>new Date(o)):[],createdDate:t.createdAt||t.created||t.createdDate?new Date(t.createdAt||t.created||t.createdDate):void 0,recordCount:t.recordCount};return console.log("\u2705 Mapped to frontend:",r),r}refreshDataSources(){this.getAllDataSources().subscribe()}handleError(t){let e="Une erreur est survenue";return t.error instanceof ErrorEvent?e=`Erreur: ${t.error.message}`:(e=`Erreur ${t.status}: ${t.message}`,t.error&&typeof t.error=="string"&&(e+=` - ${t.error}`)),console.error("\u274C HTTP Error:",e,t),tt(()=>new Error(e))}static \u0275fac=function(e){return new(e||n)(Ce(ai))};static \u0275prov=J({token:n,factory:n.\u0275fac,providedIn:"root"})};function Ju(n,t){n&1&&(s(0,"div",46)(1,"span"),u(2,"Create/edit mode active"),l()())}function ep(n,t){if(n&1){let e=T();s(0,"button",47),_("click",function(){y(e);let r=h();return v(r.openCreateForm())}),b(),s(1,"svg",22),g(2,"path",48),l(),S(),s(3,"span"),u(4,"New Data Source"),l()()}}function tp(n,t){n&1&&(s(0,"div",49)(1,"div",29),b(),s(2,"svg",22),g(3,"path",50),l(),S(),s(4,"span"),u(5,"An internal data source already exists. You can only create external sources."),l()()())}function ip(n,t){if(n&1){let e=T();s(0,"button",55),_("click",function(){let r=y(e).$implicit,o=h(3);return v(o.applyToolFilter(r))}),u(1),l()}if(n&2){let e=t.$implicit,i=h(3);I("bg-blue-600",i.filterTool===e)("text-white",i.filterTool===e)("bg-gray-100",i.filterTool!==e),d(),D(" ",e," ")}}function np(n,t){if(n&1){let e=T();s(0,"div")(1,"h4",53),u(2,"Source tool"),l(),s(3,"div",60)(4,"button",55),_("click",function(){y(e);let r=h(2);return v(r.applyToolFilter("ALL"))}),u(5," All "),l(),w(6,ip,2,7,"button",61),l()()}if(n&2){let e=h(2);d(4),I("bg-blue-600",e.filterTool==="ALL")("text-white",e.filterTool==="ALL")("bg-gray-100",e.filterTool!=="ALL"),d(2),f("ngForOf",e.getAvailableTools())}}function rp(n,t){if(n&1){let e=T();s(0,"div",51)(1,"div",52)(2,"div")(3,"h4",53),u(4,"Source type"),l(),s(5,"div",54)(6,"button",55),_("click",function(){y(e);let r=h();return v(r.applyTypeFilter("ALL"))}),u(7," All "),l(),s(8,"button",55),_("click",function(){y(e);let r=h();return v(r.applyTypeFilter("INTERNAL"))}),u(9," Internal "),l(),s(10,"button",55),_("click",function(){y(e);let r=h();return v(r.applyTypeFilter("EXTERNAL"))}),u(11," External "),l()()(),w(12,np,7,7,"div",56),s(13,"div")(14,"h4",53),u(15,"Search"),l(),s(16,"input",57),de("ngModelChange",function(r){y(e);let o=h();return ce(o.searchTerm,r)||(o.searchTerm=r),v(r)}),l()(),s(17,"div",58)(18,"button",59),_("click",function(){y(e);let r=h();return v(r.resetFilters())}),u(19," Reset "),l()()()()}if(n&2){let e=h();d(6),I("bg-blue-600",e.filterType==="ALL")("text-white",e.filterType==="ALL")("bg-gray-100",e.filterType!=="ALL"),d(2),I("bg-blue-600",e.filterType==="INTERNAL")("text-white",e.filterType==="INTERNAL")("bg-gray-100",e.filterType!=="INTERNAL"),d(2),I("bg-blue-600",e.filterType==="EXTERNAL")("text-white",e.filterType==="EXTERNAL")("bg-gray-100",e.filterType!=="EXTERNAL"),d(2),f("ngIf",e.getAvailableTools().length>0),d(4),le("ngModel",e.searchTerm)}}function op(n,t){if(n&1){let e=T();s(0,"div",62)(1,"button",63),_("click",function(){y(e);let r=h();return r.exportAsJSON(),v(r.showExportMenu=!1)}),b(),s(2,"svg",64),g(3,"path",65),l(),S(),s(4,"span"),u(5,"Export as JSON"),l()(),s(6,"button",63),_("click",function(){y(e);let r=h();return r.exportAsCSV(),v(r.showExportMenu=!1)}),b(),s(7,"svg",64),g(8,"path",66),l(),S(),s(9,"span"),u(10,"Export as CSV"),l()(),s(11,"button",63),_("click",function(){y(e);let r=h();return r.exportConfiguration(),v(r.showExportMenu=!1)}),b(),s(12,"svg",64),g(13,"path",67)(14,"path",68),l(),S(),s(15,"span"),u(16,"Export configuration"),l()()()}}function ap(n,t){n&1&&(s(0,"div",93),u(1," Only letters, numbers, hyphens and underscores are allowed "),l())}function sp(n,t){n&1&&(s(0,"div",93),u(1," Name is required "),l())}function lp(n,t){n&1&&(Gt(0),s(1,"div",79)(2,"div",94),b(),s(3,"svg",95),g(4,"path",96),l(),S(),s(5,"p",97)(6,"strong"),u(7,"Note:"),l(),u(8," External sources are read-only. To modify this data, edit it in the source tool and then re-import. "),l()()(),s(9,"div")(10,"label",80),u(11,"Source Tool/System"),l(),s(12,"select",98)(13,"option",99),u(14,"None"),l(),s(15,"option",100),u(16,"Tropy (Photo management)"),l(),s(17,"option",101),u(18,"Lameta (Audio/video recordings)"),l(),s(19,"option",102),u(20,"Gramps (Genealogy data)"),l(),s(21,"option",103),u(22,"Other RDF source"),l()()(),s(23,"div")(24,"label",80),u(25,"RDF File URL or Path"),l(),g(26,"input",104),s(27,"p",84),u(28,"Path to the RDF file to import"),l()(),Ht())}function cp(n,t){if(n&1){let e=T();s(0,"div",69)(1,"div",70)(2,"div",71)(3,"div",72),b(),s(4,"svg",73),g(5,"path",48),l(),S(),s(6,"h2",74),u(7),l()(),s(8,"button",75),_("click",function(){y(e);let r=h();return v(r.cancelForm())}),b(),s(9,"svg",73),g(10,"path",76),l()()()(),S(),s(11,"div",19)(12,"form",77),_("ngSubmit",function(){y(e);let r=h();return v(r.onSubmit())}),s(13,"div",78)(14,"div",79)(15,"label",80),u(16,"Source Type *"),l(),s(17,"select",81)(18,"option",82),u(19," Internal (Editable in application) "),l(),s(20,"option",83),u(21,"External (Read-only, imported)"),l()(),s(22,"p",84),u(23,"Internal sources are editable. External sources are read-only."),l()(),s(24,"div")(25,"label",80),u(26," Short Name (Graph ID) * "),l(),g(27,"input",85),s(28,"p",86),u(29),l(),w(30,ap,2,0,"div",87),l(),s(31,"div")(32,"label",80),u(33,"Display Name *"),l(),g(34,"input",88),w(35,sp,2,0,"div",87),l(),s(36,"div",79)(37,"label",80),u(38,"Description"),l(),g(39,"textarea",89),l(),w(40,lp,29,0,"ng-container",56),l(),s(41,"div",90)(42,"button",91),_("click",function(){y(e);let r=h();return v(r.cancelForm())}),u(43," Cancel "),l(),s(44,"button",92),u(45),l()()()()()}if(n&2){let e,i,r,o,a,c=h();d(7),D(" ",c.isEditing?"Edit Data Source":"Create New Data Source"," "),d(5),f("formGroup",c.dataSourceForm),d(6),f("disabled",!c.canCreateInternalSource()&&!c.isEditing),d(9),I("border-red-300",((e=c.dataSourceForm.get("shortName"))==null?null:e.invalid)&&((e=c.dataSourceForm.get("shortName"))==null?null:e.touched)),f("readonly",c.isEditing),d(2),D("Graph: urn:datasource:",((i=c.dataSourceForm.get("shortName"))==null?null:i.value)||"your-name",""),d(),f("ngIf",((r=c.dataSourceForm.get("shortName"))==null?null:r.invalid)&&((r=c.dataSourceForm.get("shortName"))==null?null:r.touched)),d(4),I("border-red-300",((o=c.dataSourceForm.get("name"))==null?null:o.invalid)&&((o=c.dataSourceForm.get("name"))==null?null:o.touched)),d(),f("ngIf",((a=c.dataSourceForm.get("name"))==null?null:a.invalid)&&((a=c.dataSourceForm.get("name"))==null?null:a.touched)),d(5),f("ngIf",c.isExternal()),d(4),f("disabled",!c.dataSourceForm.valid),d(),D(" ",c.isEditing?"Update":"Create Source"," ")}}function dp(n,t){if(n&1&&(s(0,"span",135),b(),s(1,"svg",136),g(2,"path",137),l(),u(3),l()),n&2){let e=h().$implicit;d(3),D(" ",e.graphIRI," ")}}function mp(n,t){if(n&1&&(s(0,"span",138),b(),s(1,"svg",139),g(2,"path",67)(3,"path",68),l(),u(4),l()),n&2){let e=h().$implicit;d(4),D(" ",e.tool," ")}}function up(n,t){n&1&&(s(0,"span",140),u(1,"-"),l())}function pp(n,t){if(n&1&&(s(0,"span"),u(1),Re(2,"date"),l()),n&2){let e=h().$implicit;d(),j(pt(2,1,e.lastSyncDate,"short"))}}function hp(n,t){n&1&&(s(0,"span",140),u(1,"-"),l())}function fp(n,t){if(n&1){let e=T();s(0,"button",141),_("click",function(r){y(e);let o=h().$implicit;return h(2).reimportSource(o),v(r.stopPropagation())}),b(),s(1,"svg",22),g(2,"path",34),l()()}}function gp(n,t){if(n&1){let e=T();s(0,"tr",116),_("click",function(){let r=y(e).$implicit,o=h(2);return v(o.selectDataSource(r))}),s(1,"td",117)(2,"div",118)(3,"span",119),u(4),l(),s(5,"span",120),u(6),l(),w(7,dp,4,1,"span",121),l()(),s(8,"td",117)(9,"span",122),u(10),l()(),s(11,"td",123),w(12,mp,5,1,"span",124)(13,up,2,0,"span",125),l(),s(14,"td",123),w(15,pp,3,4,"span",56)(16,hp,2,0,"span",125),l(),s(17,"td",117)(18,"span",122),b(),s(19,"svg",126),g(20,"circle",127),l(),u(21),l()(),S(),s(22,"td",128)(23,"div",129)(24,"button",130),_("click",function(r){let o=y(e).$implicit;return h(2).openEditForm(o),v(r.stopPropagation())}),b(),s(25,"svg",22),g(26,"path",131),l()(),w(27,fp,3,0,"button",132),S(),s(28,"button",133),_("click",function(r){let o=y(e).$implicit;return h(2).deleteDataSource(o),v(r.stopPropagation())}),b(),s(29,"svg",22),g(30,"path",134),l()()()()()}if(n&2){let e=t.$implicit,i=h(2);I("bg-blue-50",(i.selectedDataSource==null?null:i.selectedDataSource.id)===e.id),d(4),j(e.name),d(2),j(e.shortName),d(),f("ngIf",e.graphIRI),d(2),I("bg-blue-100",e.sourceType==="INTERNAL")("text-blue-700",e.sourceType==="INTERNAL")("bg-purple-100",e.sourceType==="EXTERNAL")("text-purple-700",e.sourceType==="EXTERNAL"),d(),D(" ",e.sourceType," "),d(2),f("ngIf",e.tool),d(),f("ngIf",!e.tool),d(2),f("ngIf",e.lastSyncDate),d(),f("ngIf",!e.lastSyncDate),d(2),I("bg-green-100",e.editable!==!1)("text-green-700",e.editable!==!1)("bg-red-100",e.editable===!1)("text-red-700",e.editable===!1),d(3),D(" ",e.editable!==!1?"Yes":"No"," "),d(3),I("opacity-50",e.editable===!1),f("disabled",e.editable===!1),he("aria-label",e.editable===!1?"Cannot edit external source":"Edit"),d(3),f("ngIf",e.sourceType==="EXTERNAL")}}function _p(n,t){if(n&1&&(s(0,"div",105)(1,"div",106)(2,"div",71)(3,"h2",107),b(),s(4,"svg",95),g(5,"path",7),l(),u(6," Data Sources & Named Graphs "),l(),S(),s(7,"span",108),u(8),l()()(),s(9,"div",109)(10,"table",110)(11,"thead",111)(12,"tr")(13,"th",112),u(14," Name & Graph "),l(),s(15,"th",112),u(16," Type "),l(),s(17,"th",112),u(18," Source "),l(),s(19,"th",112),u(20," Last Sync "),l(),s(21,"th",112),u(22," Editable "),l(),s(23,"th",113),u(24," Actions "),l()()(),s(25,"tbody",114),w(26,gp,31,32,"tr",115),l()()()()),n&2){let e=h();d(8),D("",e.dataSources.length," source(s)"),d(18),f("ngForOf",e.getFilteredSources())}}function yp(n,t){if(n&1){let e=T();s(0,"div",142),b(),s(1,"svg",143),g(2,"path",144),l(),S(),s(3,"h3",145),u(4,"No Data Sources"),l(),s(5,"p",146),u(6,"Create your first source to start managing your RDF metadata"),l(),s(7,"button",147),_("click",function(){y(e);let r=h();return v(r.openCreateForm())}),b(),s(8,"svg",22),g(9,"path",48),l(),u(10," Create Data Source "),l()()}}function vp(n,t){if(n&1&&(s(0,"div")(1,"label",80),u(2,"Description"),l(),s(3,"p",164),u(4),l()()),n&2){let e=h(2);d(4),j(e.selectedDataSource.description)}}function bp(n,t){if(n&1&&(s(0,"div")(1,"span",168),u(2,"Tool"),l(),s(3,"p",169),u(4),l()()),n&2){let e=h(3);d(4),j(e.selectedDataSource.tool)}}function xp(n,t){if(n&1&&(s(0,"div")(1,"span",168),u(2,"URL"),l(),s(3,"p",170),u(4),l()()),n&2){let e=h(3);d(4),j(e.selectedDataSource.url)}}function wp(n,t){if(n&1&&(s(0,"div")(1,"span",168),u(2,"Last Sync"),l(),s(3,"p",169),u(4),Re(5,"date"),l()()),n&2){let e=h(3);d(4),j(pt(5,1,e.selectedDataSource.lastSyncDate,"medium"))}}function Cp(n,t){if(n&1&&(s(0,"div",165)(1,"h3",166),u(2,"External Source"),l(),s(3,"div",167),w(4,bp,5,1,"div",56)(5,xp,5,1,"div",56)(6,wp,6,4,"div",56),l()()),n&2){let e=h(2);d(4),f("ngIf",e.selectedDataSource.tool),d(),f("ngIf",e.selectedDataSource.url),d(),f("ngIf",e.selectedDataSource.lastSyncDate)}}function Sp(n,t){if(n&1&&(s(0,"div",177),b(),s(1,"svg",136),g(2,"path",178),l(),u(3),Re(4,"date"),l()),n&2){let e=t.$implicit;d(3),D(" ",pt(4,1,e,"medium")," ")}}function kp(n,t){if(n&1&&(s(0,"div",175),w(1,Sp,5,4,"div",176),l()),n&2){let e=h(3);d(),f("ngForOf",e.selectedDataSource.previousImportDates)}}function Ep(n,t){if(n&1){let e=T();s(0,"div")(1,"button",171),_("click",function(){y(e);let r=h(2);return v(r.toggleHistory(r.selectedDataSource.id))}),s(2,"span"),u(3),l(),b(),s(4,"svg",172),g(5,"path",173),l()(),w(6,kp,2,1,"div",174),l()}if(n&2){let e=h(2);d(3),D("Import History (",e.selectedDataSource.previousImportDates.length,")"),d(),I("rotate-180",e.expandedHistory===e.selectedDataSource.id),d(2),f("ngIf",e.expandedHistory===e.selectedDataSource.id)}}function Tp(n,t){if(n&1){let e=T();s(0,"aside",148)(1,"div",149)(2,"div",72),b(),s(3,"svg",95),g(4,"path",16),l(),S(),s(5,"h2",150),u(6),l()(),s(7,"button",151),_("click",function(){y(e);let r=h();return v(r.closeDetail())}),b(),s(8,"svg",152),g(9,"path",76),l()()(),S(),s(10,"div",19)(11,"div",153)(12,"div")(13,"label",80),u(14,"Short Name"),l(),s(15,"div",154)(16,"span",155),u(17),l(),s(18,"button",156),_("click",function(){y(e);let r=h();return v(r.copyToClipboard(r.selectedDataSource.id))}),b(),s(19,"svg",22),g(20,"path",157),l()()()(),S(),s(21,"div")(22,"label",80),u(23,"Named Graph (IRI)"),l(),s(24,"div",158)(25,"span",159),u(26),l(),s(27,"button",160),_("click",function(){y(e);let r=h();return v(r.copyToClipboard(r.selectedDataSource.graphIRI))}),b(),s(28,"svg",22),g(29,"path",157),l()()()(),w(30,vp,5,1,"div",56),S(),s(31,"div",161)(32,"div")(33,"label",162),u(34,"Type"),l(),s(35,"span",122),u(36),l()(),s(37,"div")(38,"label",162),u(39,"Editable"),l(),s(40,"span",122),u(41),l()()(),w(42,Cp,7,3,"div",163)(43,Ep,7,4,"div",56),l()()()}if(n&2){let e=h();d(6),j(e.selectedDataSource.name),d(11),j(e.selectedDataSource.id),d(9),j(e.selectedDataSource.graphIRI),d(4),f("ngIf",e.selectedDataSource.description),d(5),I("bg-blue-100",e.selectedDataSource.sourceType==="INTERNAL")("text-blue-700",e.selectedDataSource.sourceType==="INTERNAL")("bg-purple-100",e.selectedDataSource.sourceType==="EXTERNAL")("text-purple-700",e.selectedDataSource.sourceType==="EXTERNAL"),d(),D(" ",e.selectedDataSource.sourceType," "),d(4),I("bg-green-100",e.selectedDataSource.editable!==!1)("text-green-700",e.selectedDataSource.editable!==!1)("bg-red-100",e.selectedDataSource.editable===!1)("text-red-700",e.selectedDataSource.editable===!1),d(),D(" ",e.selectedDataSource.editable!==!1?"Yes":"No"," "),d(),f("ngIf",e.selectedDataSource.sourceType==="EXTERNAL"),d(),f("ngIf",e.selectedDataSource.previousImportDates&&e.selectedDataSource.previousImportDates.length>0)}}var Or=class n{constructor(t,e,i,r,o){this.dataSourceService=t;this.fb=e;this.snackBar=i;this.dialog=r;this.router=o;this.dataSourceForm=this.fb.group({shortName:["",[Pe.required,Pe.pattern(/^[a-zA-Z0-9_-]+$/)]],name:["",Pe.required],description:[""],sourceType:["INTERNAL",Pe.required],url:[""],tool:[""]})}dataSources=[];selectedDataSource=null;expandedHistory=null;showForm=!1;isEditing=!1;currentEditId=null;dataSourceForm;destroy$=new _e;showFilterMenu=!1;filterType="ALL";filterTool="ALL";searchTerm="";showExportMenu=!1;ngOnInit(){this.setupConditionalValidation(),this.loadDataSources(),this.dataSourceService.dataSources$.pipe(ue(this.destroy$)).subscribe(t=>{this.dataSources=t})}ngOnDestroy(){this.destroy$.next(),this.destroy$.complete()}setupConditionalValidation(){this.dataSourceForm.get("sourceType")?.valueChanges.pipe(ue(this.destroy$)).subscribe(t=>{let e=this.dataSourceForm.get("tool"),i=this.dataSourceForm.get("url");t==="EXTERNAL"?(e?.setValidators([Pe.required]),i?.setValidators([Pe.required,Pe.minLength(5)]),console.log("\u2705 Validation EXTERNAL activ\xE9e: tool et url requis")):(e?.clearValidators(),i?.clearValidators(),e?.setValue(""),i?.setValue(""),console.log("\u2705 Validation INTERNAL: tool et url non requis")),e?.updateValueAndValidity(),i?.updateValueAndValidity()})}loadDataSources(){this.dataSourceService.getAllDataSources().pipe(ue(this.destroy$)).subscribe({next:t=>{this.dataSources=t},error:t=>{this.showNotification("Erreur lors du chargement des sources","error"),console.error("Error:",t)}})}openCreateForm(){this.showForm=!0,this.isEditing=!1,this.currentEditId=null,this.selectedDataSource=null,this.canCreateInternalSource()?(this.dataSourceForm.reset({sourceType:"INTERNAL"}),console.log("\u2705 Aucune source INTERNAL \u2192 Formulaire en mode INTERNAL")):(this.dataSourceForm.reset({sourceType:"EXTERNAL"}),console.log("\u26A0\uFE0F Source INTERNAL existe \u2192 Formulaire en mode EXTERNAL"))}openEditForm(t){if(t.editable===!1){this.showNotification("External sources cannot be edited. Edit in source tool and re-import.","warning");return}this.showForm=!0,this.isEditing=!0,this.currentEditId=t.id||null,this.dataSourceForm.patchValue({shortName:t.shortName,name:t.name,description:t.description,sourceType:t.sourceType,url:t.url||"",tool:t.tool||""})}cancelForm(){this.showForm=!1,this.isEditing=!1,this.currentEditId=null,this.dataSourceForm.reset({sourceType:"INTERNAL"})}onSubmit(){if(this.dataSourceForm.markAllAsTouched(),this.dataSourceForm.valid){let t=this.dataSourceForm.value;if(t.sourceType==="INTERNAL"&&!this.canCreateInternalSource()&&!this.isEditing){this.showNotification("An internal data source already exists.","error");return}if(t.sourceType==="EXTERNAL"){if(!t.tool||t.tool.trim()===""){this.showNotification("Source tool is required for external sources.","error");return}if(!t.url||t.url.trim()===""){this.showNotification("RDF file path is required for external sources.","error");return}}this.isEditing&&this.currentEditId?this.updateDataSource(this.currentEditId,t):this.createDataSource(t)}else{let t=[];this.dataSourceForm.get("shortName")?.invalid&&t.push("Short name"),this.dataSourceForm.get("name")?.invalid&&t.push("Display name"),this.dataSourceForm.get("tool")?.invalid&&t.push("Source tool"),this.dataSourceForm.get("url")?.invalid&&t.push("File path");let e=t.length>0?`Missing fields: ${t.join(", ")}`:"Please fill in all required fields";this.showNotification(e,"error")}}createDataSource(t){(t.sourceType==="INTERNAL"?this.dataSourceService.createInternalSource(t):this.dataSourceService.createExternalSource(t)).pipe(ue(this.destroy$)).subscribe({next:i=>{this.showNotification(`Source created: ${i.graphIRI}`,"success"),this.cancelForm()},error:i=>{this.showNotification(`Error: ${i.message}`,"error"),console.error("Error:",i)}})}updateDataSource(t,e){this.dataSourceService.updateDataSource(t,e).pipe(ue(this.destroy$)).subscribe({next:i=>{this.showNotification("Source updated","success"),this.cancelForm()},error:i=>{this.showNotification(`Error: ${i.message}`,"error")}})}deleteDataSource(t){let e=`Delete "${t.name}" and its named graph?`;confirm(e)&&this.dataSourceService.deleteDataSource(t.shortName).pipe(ue(this.destroy$)).subscribe({next:()=>{this.showNotification("Source deleted","success"),this.selectedDataSource?.id===t.id&&(this.selectedDataSource=null)},error:i=>{this.showNotification(`Error: ${i.message}`,"error")}})}reimportSource(t){confirm(`Re-import from ${t.url}?`)&&this.dataSourceService.syncExternalSource(t.shortName).pipe(ue(this.destroy$)).subscribe({next:()=>{this.showNotification("Data re-imported","success")},error:e=>{this.showNotification(`Error: ${e.message}`,"error")}})}selectDataSource(t){this.selectedDataSource=t,this.showForm=!1}closeDetail(){this.selectedDataSource=null}toggleHistory(t){this.expandedHistory=this.expandedHistory===t?null:t}copyToClipboard(t){t&&navigator.clipboard.writeText(t).then(()=>{this.showNotification("Copied to clipboard","success")}).catch(e=>{console.error("Copy error",e),this.showNotification("Copy error","error")})}isExternal(){return this.dataSourceForm.get("sourceType")?.value==="EXTERNAL"}showNotification(t,e){this.snackBar.open(t,"Fermer",{duration:e==="error"?5e3:3e3,horizontalPosition:"end",verticalPosition:"top",panelClass:`snackbar-${e}`})}canCreateInternalSource(){let t=this.dataSources.filter(e=>e.sourceType?.toUpperCase()==="INTERNAL");return console.log("Sources internes:",t.length),t.length===0}toggleFilterMenu(){this.showFilterMenu=!this.showFilterMenu,console.log("\u{1F53D} Menu filtre:",this.showFilterMenu?"ouvert":"ferm\xE9")}applyTypeFilter(t){this.filterType=t,console.log("\u{1F50D} Filtre type:",t)}applyToolFilter(t){this.filterTool=t,console.log("\u{1F50D} Filtre outil:",t)}resetFilters(){this.filterType="ALL",this.filterTool="ALL",this.searchTerm="",console.log("\u{1F504} Filtres r\xE9initialis\xE9s")}getFilteredSources(){let t=[...this.dataSources];if(this.filterType!=="ALL"&&(t=t.filter(e=>e.sourceType===this.filterType)),this.filterTool!=="ALL"&&(t=t.filter(e=>e.tool===this.filterTool)),this.searchTerm.trim()!==""){let e=this.searchTerm.toLowerCase();t=t.filter(i=>i.name.toLowerCase().includes(e)||i.shortName.toLowerCase().includes(e)||i.description&&i.description.toLowerCase().includes(e))}return t}getAvailableTools(){return[...new Set(this.dataSources.filter(t=>t.tool).map(t=>t.tool))]}exportAsJSON(){let t=this.getFilteredSources(),e=JSON.stringify(t,null,2),i=new Blob([e],{type:"application/json"}),r=window.URL.createObjectURL(i),o=document.createElement("a");o.href=r,o.download=`datasources-${new Date().toISOString().split("T")[0]}.json`,o.click(),window.URL.revokeObjectURL(r),this.showNotification("JSON export successful","success")}exportAsCSV(){let t=this.getFilteredSources(),e=["Short Name","Name","Type","Tool","Editable","Graph IRI"],i=t.map(m=>[m.shortName,m.name,m.sourceType,m.tool||"-",m.editable?"Yes":"No",m.graphIRI]),r=[e.join(","),...i.map(m=>m.map(p=>`"${p}"`).join(","))].join(`
+`),o=new Blob([r],{type:"text/csv;charset=utf-8;"}),a=window.URL.createObjectURL(o),c=document.createElement("a");c.href=a,c.download=`datasources-${new Date().toISOString().split("T")[0]}.csv`,c.click(),window.URL.revokeObjectURL(a),this.showNotification("CSV export successful","success")}exportConfiguration(){let t={exportDate:new Date().toISOString(),totalSources:this.dataSources.length,sources:this.dataSources.map(a=>({shortName:a.shortName,name:a.name,description:a.description,type:a.sourceType,tool:a.tool,url:a.url,graphIRI:a.graphIRI,editable:a.editable}))},e=JSON.stringify(t,null,2),i=new Blob([e],{type:"application/json"}),r=window.URL.createObjectURL(i),o=document.createElement("a");o.href=r,o.download=`datasources-config-${new Date().toISOString().split("T")[0]}.json`,o.click(),window.URL.revokeObjectURL(r),this.showNotification("Configuration export successful","success")}onFileSelected(t){let e=t.target;if(!e.files||e.files.length===0)return;let i=e.files[0];if(!i.name.endsWith(".json")){this.showNotification("File must be in JSON format","error");return}let r=new FileReader;r.onload=o=>{try{let a=o.target?.result,c=JSON.parse(a);if(!this.validateConfigStructure(c)){this.showNotification("Invalid configuration format","error");return}this.confirmImport(c)}catch(a){console.error("Erreur parsing JSON:",a),this.showNotification("Invalid JSON file","error")}},r.onerror=()=>{this.showNotification("Error reading file","error")},r.readAsText(i),e.value=""}validateConfigStructure(t){if(!t||typeof t!="object")return!1;let e=Array.isArray(t)?t:t.sources;return Array.isArray(e)?e.every(i=>i&&typeof i=="object"&&i.shortName&&i.name&&(i.type||i.sourceType)):!1}confirmImport(t){let e=Array.isArray(t)?t:t.sources,r=`Do you want to import ${e.length} source(s)?
+
+\u26A0\uFE0F Warning:
+- Sources with the same shortName will be skipped
+- Only 1 INTERNAL source can exist
+- EXTERNAL sources will be created but not automatically synchronized`;confirm(r)&&this.importConfiguration(e)}importConfiguration(t){let e=0,i=0,r=0,o=[],a=t.length,c=t.filter(m=>(m.type||m.sourceType)?.toUpperCase()==="INTERNAL");if(c.length>1){this.showNotification(`\u274C File contains ${c.length} INTERNAL sources. Only 1 is allowed.`,"error");return}if(c.length===1&&!this.canCreateInternalSource()){this.showNotification("\u274C An INTERNAL source already exists. Delete it before importing.","error");return}this.showNotification(`\u{1F504} Importing ${a} source(s)...`,"info"),t.forEach(m=>{let p=(m.type||m.sourceType)?.toUpperCase(),x={shortName:m.shortName,name:m.name,description:m.description||"",sourceType:p,url:m.url||void 0,tool:m.tool||void 0};(p==="INTERNAL"?this.dataSourceService.createInternalSource(x):this.dataSourceService.createExternalSource(x)).pipe(ue(this.destroy$)).subscribe({next:R=>{e++,r++,console.log(`\u2705 Source import\xE9e: ${R.name}`),r===a&&this.showImportSummary(e,i,o)},error:R=>{i++,r++;let P=`${m.shortName}: ${R.message||"Erreur inconnue"}`;o.push(P),console.error(`\u274C Erreur import ${m.shortName}:`,R),r===a&&this.showImportSummary(e,i,o)}})})}showImportSummary(t,e,i){if(e===0)this.showNotification(`\u2705 Import successful! ${t} source(s) created`,"success");else{let r=`\u26A0\uFE0F Partial Import:
+\u2705 ${t} succeeded
+\u274C ${e} failed
+
+Erreurs:
+${i.join(`
+`)}`;console.error("Import errors",i),this.showNotification(r,"warning")}}static \u0275fac=function(e){return new(e||n)(K(Ar),K(kn),K(Tt),K(Mt),K(lt))};static \u0275cmp=q({type:n,selectors:[["app-gestion-sources"]],decls:65,vars:27,consts:[["fileInput",""],[1,"flex","flex-col","h-screen","bg-gray-50"],[1,"bg-gradient-to-r","from-blue-900","to-blue-600","shadow-lg"],[1,"flex","items-center","justify-between","px-6","py-4"],[1,"flex","items-center","gap-4"],[1,"flex","items-center","justify-center","w-10","h-10","bg-white/20","backdrop-blur-sm","rounded-xl","hover:bg-white/30","transition-all","duration-300","cursor-pointer"],["fill","none","stroke","currentColor","viewBox","0 0 24 24",1,"w-6","h-6","text-white"],["stroke-linecap","round","stroke-linejoin","round","stroke-width","2","d","M4 7v10c0 2.21 3.582 4 8 4s8-1.79 8-4V7M4 7c0 2.21 3.582 4 8 4s8-1.79 8-4M4 7c0-2.21 3.582-4 8-4s8 1.79 8 4m0 5c0 2.21-3.582 4-8 4s-8-1.79-8-4"],[1,"text-xl","font-bold","text-white","tracking-tight"],[1,"text-xs","text-blue-100"],[1,"cursor-pointer","flex","items-center","gap-2","px-3","py-1.5","bg-white/10","hover:bg-white/20","backdrop-blur-md","rounded-lg","transition-colors",3,"click"],["fill","none","stroke","currentColor","viewBox","0 0 24 24",1,"w-4","h-4","text-white"],["stroke-linecap","round","stroke-linejoin","round","stroke-width","2","d","M15 19l-7-7 7-7"],[1,"text-sm","text-white","font-medium"],["fill","none","stroke","currentColor","viewBox","0 0 24 24",1,"w-4","h-4","text-white","rotate-180"],[1,"flex","items-center","gap-2","px-3","py-1.5","bg-white/10","backdrop-blur-md","rounded-lg"],["stroke-linecap","round","stroke-linejoin","round","stroke-width","2","d","M4 7v10c0 2.21 3.582 4 8 4s8-1.79 8-4V7M4 7c0 2.21 3.582 4 8 4s8-1.79 8-4M4 7c0-2.21 3.582-4 8-4s8 1.79 8 4"],[1,"flex","flex-1","overflow-hidden"],[1,"flex-1","overflow-y-auto","bg-gray-50"],[1,"p-6"],[1,"mb-4","flex","items-center","gap-4"],[1,"flex","items-center","gap-2","text-sm","text-gray-600"],["fill","none","stroke","currentColor","viewBox","0 0 24 24",1,"w-4","h-4"],["stroke-linecap","round","stroke-linejoin","round","stroke-width","2","d","M4 7v10c0 2.21 3.582 4 8 4s8-1.79 8-4V7"],["class","inline-flex items-center gap-2 px-3 py-1.5 bg-blue-100 text-blue-700 rounded-full text-sm font-medium animate-fade-in",4,"ngIf"],[1,"flex","items-center","gap-3","mb-6"],["class","flex items-center gap-2 px-4 py-2.5 bg-blue-600 text-white rounded-lg hover:bg-blue-700 transition-all text-sm font-medium shadow-sm hover:shadow-md transform hover:scale-105 duration-200",3,"click",4,"ngIf"],["class","px-4 py-2 bg-amber-50 border border-amber-200 rounded-lg text-sm text-amber-700",4,"ngIf"],[1,"flex-1"],[1,"flex","items-center","gap-2"],[1,"relative"],["type","file","accept",".json",1,"hidden",3,"change"],["aria-label","Import configuration",1,"p-2.5","border","border-gray-300","rounded-lg","hover:bg-gray-50","transition-colors",3,"click"],["fill","none","stroke","currentColor","viewBox","0 0 24 24",1,"w-5","h-5","text-gray-600"],["stroke-linecap","round","stroke-linejoin","round","stroke-width","2","d","M4 16v1a3 3 0 003 3h10a3 3 0 003-3v-1m-4-8l-4-4m0 0L8 8m4-4v12"],["aria-label","Advanced filters",1,"p-2.5","border","border-gray-300","rounded-lg","hover:bg-gray-50","transition-colors",3,"click"],["fill","none","stroke","currentColor","viewBox","0 0 24 24",1,"w-5","h-5"],["stroke-linecap","round","stroke-linejoin","round","stroke-width","2","d","M3 4a1 1 0 011-1h16a1 1 0 011 1v2.586a1 1 0 01-.293.707l-6.414 6.414a1 1 0 00-.293.707V17l-4 4v-6.586a1 1 0 00-.293-.707L3.293 7.293A1 1 0 013 6.586V4z"],["class","absolute right-0 mt-2 w-80 bg-white rounded-lg shadow-xl border border-gray-200 z-[9999] p-4",4,"ngIf"],["aria-label","Export data",1,"p-2.5","border","border-gray-300","rounded-lg","hover:bg-gray-50","transition-colors",3,"click"],["stroke-linecap","round","stroke-linejoin","round","stroke-width","2","d","M4 16v1a3 3 0 003 3h10a3 3 0 003-3v-1m-4-4l-4 4m0 0l-4-4m4 4V4"],["class","absolute right-0 mt-2 w-56 bg-white rounded-lg shadow-xl border border-gray-200 z-[9999] py-1",4,"ngIf"],["class","bg-white rounded-lg shadow-sm border border-gray-200 overflow-hidden mb-6 animate-fade-in",4,"ngIf"],["class","bg-white rounded-lg shadow-sm border border-gray-200 overflow-hidden",4,"ngIf"],["class","bg-white rounded-lg shadow-sm border border-gray-200 p-12 text-center",4,"ngIf"],["class","w-96 bg-white border-l border-gray-200 overflow-y-auto shadow-xl animate-slide-in",4,"ngIf"],[1,"inline-flex","items-center","gap-2","px-3","py-1.5","bg-blue-100","text-blue-700","rounded-full","text-sm","font-medium","animate-fade-in"],[1,"flex","items-center","gap-2","px-4","py-2.5","bg-blue-600","text-white","rounded-lg","hover:bg-blue-700","transition-all","text-sm","font-medium","shadow-sm","hover:shadow-md","transform","hover:scale-105","duration-200",3,"click"],["stroke-linecap","round","stroke-linejoin","round","stroke-width","2","d","M12 4v16m8-8H4"],[1,"px-4","py-2","bg-amber-50","border","border-amber-200","rounded-lg","text-sm","text-amber-700"],["stroke-linecap","round","stroke-linejoin","round","stroke-width","2","d","M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z"],[1,"absolute","right-0","mt-2","w-80","bg-white","rounded-lg","shadow-xl","border","border-gray-200","z-[9999]","p-4"],[1,"space-y-4"],[1,"text-xs","font-semibold","text-gray-500","uppercase","tracking-wider","mb-2"],[1,"flex","gap-2"],[1,"px-3","py-1.5","rounded","text-xs","font-medium","transition-colors",3,"click"],[4,"ngIf"],["type","text","placeholder","Search...",1,"w-full","px-3","py-2","border","border-gray-300","rounded-lg","text-sm","focus:outline-none","focus:ring-2","focus:ring-blue-500",3,"ngModelChange","ngModel"],[1,"pt-3","border-t","border-gray-200","flex","justify-end"],[1,"px-3","py-1.5","text-xs","font-medium","text-gray-600","hover:text-gray-900","transition-colors",3,"click"],[1,"flex","flex-wrap","gap-2"],["class","px-3 py-1.5 rounded text-xs font-medium transition-colors",3,"bg-blue-600","text-white","bg-gray-100","click",4,"ngFor","ngForOf"],[1,"absolute","right-0","mt-2","w-56","bg-white","rounded-lg","shadow-xl","border","border-gray-200","z-[9999]","py-1"],[1,"w-full","px-4","py-2","text-left","text-sm","hover:bg-gray-50","flex","items-center","gap-3",3,"click"],["fill","none","stroke","currentColor","viewBox","0 0 24 24",1,"w-4","h-4","text-gray-600"],["stroke-linecap","round","stroke-linejoin","round","stroke-width","2","d","M10 20l4-16m4 4l4 4-4 4M6 16l-4-4 4-4"],["stroke-linecap","round","stroke-linejoin","round","stroke-width","2","d","M3 10h18M3 14h18m-9-4v8m-7 0h14a2 2 0 002-2V8a2 2 0 00-2-2H5a2 2 0 00-2 2v8a2 2 0 002 2z"],["stroke-linecap","round","stroke-linejoin","round","stroke-width","2","d","M10.325 4.317c.426-1.756 2.924-1.756 3.35 0a1.724 1.724 0 002.573 1.066c1.543-.94 3.31.826 2.37 2.37a1.724 1.724 0 001.065 2.572c1.756.426 1.756 2.924 0 3.35a1.724 1.724 0 00-1.066 2.573c.94 1.543-.826 3.31-2.37 2.37a1.724 1.724 0 00-2.572 1.065c-.426 1.756-2.924 1.756-3.35 0a1.724 1.724 0 00-2.573-1.066c-1.543.94-3.31-.826-2.37-2.37a1.724 1.724 0 00-1.065-2.572c-1.756-.426-1.756-2.924 0-3.35a1.724 1.724 0 001.066-2.573c-.94-1.543.826-3.31 2.37-2.37.996.608 2.296.07 2.572-1.065z"],["stroke-linecap","round","stroke-linejoin","round","stroke-width","2","d","M15 12a3 3 0 11-6 0 3 3 0 016 0z"],[1,"bg-white","rounded-lg","shadow-sm","border","border-gray-200","overflow-hidden","mb-6","animate-fade-in"],[1,"px-6","py-4","bg-gradient-to-r","from-blue-900","to-blue-600","border-b","border-blue-700"],[1,"flex","items-center","justify-between"],[1,"flex","items-center","gap-3"],["fill","none","stroke","currentColor","viewBox","0 0 24 24",1,"w-5","h-5","text-white"],[1,"text-lg","font-semibold","text-white"],["aria-label","Close",1,"p-1.5","hover:bg-white/20","rounded-lg","transition-colors",3,"click"],["stroke-linecap","round","stroke-linejoin","round","stroke-width","2","d","M6 18L18 6M6 6l12 12"],[3,"ngSubmit","formGroup"],[1,"grid","grid-cols-1","md:grid-cols-2","gap-6"],[1,"md:col-span-2"],[1,"block","text-sm","font-medium","text-gray-700","mb-2"],["formControlName","sourceType",1,"w-full","px-3","py-2.5","border","border-gray-300","rounded-lg","focus:outline-none","focus:ring-2","focus:ring-blue-500","focus:border-transparent","text-sm","transition-all"],["value","INTERNAL",3,"disabled"],["value","EXTERNAL"],[1,"mt-1","text-xs","text-gray-500"],["type","text","formControlName","shortName","placeholder","e.g., lameta-recordings",1,"w-full","px-3","py-2.5","border","border-gray-300","rounded-lg","focus:outline-none","focus:ring-2","focus:ring-blue-500","focus:border-transparent","text-sm","transition-all",3,"readonly"],[1,"mt-1","text-xs","text-gray-500","font-mono"],["class","mt-1 text-xs text-red-600",4,"ngIf"],["type","text","formControlName","name","placeholder","e.g., Lameta Audio Recordings",1,"w-full","px-3","py-2.5","border","border-gray-300","rounded-lg","focus:outline-none","focus:ring-2","focus:ring-blue-500","focus:border-transparent","text-sm","transition-all"],["formControlName","description","rows","3","placeholder","Describe the content of this data source...",1,"w-full","px-3","py-2.5","border","border-gray-300","rounded-lg","focus:outline-none","focus:ring-2","focus:ring-blue-500","focus:border-transparent","text-sm","transition-all"],[1,"flex","justify-end","gap-3","mt-6","pt-6","border-t","border-gray-200"],["type","button",1,"px-4","py-2.5","border","border-gray-300","text-gray-700","rounded-lg","hover:bg-gray-50","transition-colors","text-sm","font-medium",3,"click"],["type","submit",1,"px-4","py-2.5","bg-blue-600","text-white","rounded-lg","hover:bg-blue-700","transition-colors","text-sm","font-medium","disabled:opacity-50","disabled:cursor-not-allowed","shadow-sm",3,"disabled"],[1,"mt-1","text-xs","text-red-600"],[1,"flex","items-center","gap-2","px-4","py-3","bg-blue-50","border","border-blue-200","rounded-lg"],["fill","none","stroke","currentColor","viewBox","0 0 24 24",1,"w-5","h-5","text-blue-600"],["stroke-linecap","round","stroke-linejoin","round","stroke-width","2","d","M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"],[1,"text-sm","text-blue-700"],["formControlName","tool",1,"w-full","px-3","py-2.5","border","border-gray-300","rounded-lg","focus:outline-none","focus:ring-2","focus:ring-blue-500","focus:border-transparent","text-sm","transition-all"],["value",""],["value","Tropy"],["value","Lameta"],["value","Gramps"],["value","Other"],["type","text","formControlName","url","placeholder","file:///path/to/data.ttl or https://example.com/data.rdf",1,"w-full","px-3","py-2.5","border","border-gray-300","rounded-lg","focus:outline-none","focus:ring-2","focus:ring-blue-500","focus:border-transparent","text-sm","transition-all"],[1,"bg-white","rounded-lg","shadow-sm","border","border-gray-200","overflow-hidden"],[1,"px-6","py-4","bg-gray-50","border-b","border-gray-200"],[1,"text-lg","font-semibold","text-gray-900","flex","items-center","gap-2"],[1,"text-sm","text-gray-500"],[1,"overflow-x-auto"],[1,"w-full"],[1,"bg-gray-50","border-b","border-gray-200"],[1,"px-6","py-3","text-left","text-xs","font-semibold","text-gray-600","uppercase","tracking-wider"],[1,"px-6","py-3","text-right","text-xs","font-semibold","text-gray-600","uppercase","tracking-wider"],[1,"divide-y","divide-gray-200"],["class","hover:bg-gray-50 cursor-pointer transition-colors group",3,"bg-blue-50","click",4,"ngFor","ngForOf"],[1,"hover:bg-gray-50","cursor-pointer","transition-colors","group",3,"click"],[1,"px-6","py-4"],[1,"flex","flex-col"],[1,"text-sm","font-medium","text-gray-900"],[1,"text-xs","text-gray-500","font-mono","mt-1"],["class","text-xs text-blue-600 font-mono mt-0.5 flex items-center gap-1",4,"ngIf"],[1,"inline-flex","items-center","px-2.5","py-0.5","rounded-full","text-xs","font-medium"],[1,"px-6","py-4","text-sm","text-gray-600"],["class","inline-flex items-center gap-1",4,"ngIf"],["class","text-gray-400",4,"ngIf"],["fill","currentColor","viewBox","0 0 20 20",1,"w-3","h-3","mr-1"],["cx","10","cy","10","r","4"],[1,"px-6","py-4","text-right"],[1,"flex","items-center","justify-end","gap-2","opacity-0","group-hover:opacity-100","transition-opacity"],[1,"text-blue-600","hover:text-blue-800","transition-colors","disabled:cursor-not-allowed",3,"click","disabled"],["stroke-linecap","round","stroke-linejoin","round","stroke-width","2","d","M11 5H6a2 2 0 00-2 2v11a2 2 0 002 2h11a2 2 0 002-2v-5m-1.414-9.414a2 2 0 112.828 2.828L11.828 15H9v-2.828l8.586-8.586z"],["class","text-purple-600 hover:text-purple-800 transition-colors","aria-label","Re-import",3,"click",4,"ngIf"],["aria-label","Delete",1,"text-red-600","hover:text-red-800","transition-colors",3,"click"],["stroke-linecap","round","stroke-linejoin","round","stroke-width","2","d","M19 7l-.867 12.142A2 2 0 0116.138 21H7.862a2 2 0 01-1.995-1.858L5 7m5 4v6m4-6v6m1-10V4a1 1 0 00-1-1h-4a1 1 0 00-1 1v3M4 7h16"],[1,"text-xs","text-blue-600","font-mono","mt-0.5","flex","items-center","gap-1"],["fill","none","stroke","currentColor","viewBox","0 0 24 24",1,"w-3","h-3"],["stroke-linecap","round","stroke-linejoin","round","stroke-width","2","d","M13.828 10.172a4 4 0 00-5.656 0l-4 4a4 4 0 105.656 5.656l1.102-1.101m-.758-4.899a4 4 0 005.656 0l4-4a4 4 0 00-5.656-5.656l-1.1 1.1"],[1,"inline-flex","items-center","gap-1"],["fill","none","stroke","currentColor","viewBox","0 0 24 24",1,"w-4","h-4","text-gray-400"],[1,"text-gray-400"],["aria-label","Re-import",1,"text-purple-600","hover:text-purple-800","transition-colors",3,"click"],[1,"bg-white","rounded-lg","shadow-sm","border","border-gray-200","p-12","text-center"],["fill","none","stroke","currentColor","viewBox","0 0 24 24",1,"mx-auto","h-16","w-16","text-gray-300"],["stroke-linecap","round","stroke-linejoin","round","stroke-width","2","d","M19 11H5m14 0a2 2 0 012 2v6a2 2 0 01-2 2H5a2 2 0 01-2-2v-6a2 2 0 012-2m14 0V9a2 2 0 00-2-2M5 11V9a2 2 0 012-2m0 0V5a2 2 0 012-2h6a2 2 0 012 2v2M7 7h10"],[1,"mt-4","text-lg","font-medium","text-gray-900"],[1,"mt-2","text-sm","text-gray-500"],[1,"mt-4","inline-flex","items-center","gap-2","px-4","py-2","bg-blue-600","text-white","rounded-lg","hover:bg-blue-700","transition-colors","text-sm","font-medium",3,"click"],[1,"w-96","bg-white","border-l","border-gray-200","overflow-y-auto","shadow-xl","animate-slide-in"],[1,"sticky","top-0","bg-white","border-b","border-gray-200","px-6","py-4","flex","items-center","justify-between","z-10"],[1,"text-lg","font-semibold","text-gray-900"],["aria-label","Close",1,"p-1.5","hover:bg-gray-100","rounded-lg","transition-colors",3,"click"],["fill","none","stroke","currentColor","viewBox","0 0 24 24",1,"w-5","h-5","text-gray-500"],[1,"space-y-6"],[1,"flex","items-center","justify-between","p-3","bg-gray-50","border","border-gray-200","rounded-lg"],[1,"text-sm","text-gray-600","font-mono"],["aria-label","Copy",1,"text-gray-400","hover:text-gray-600","transition-colors",3,"click"],["stroke-linecap","round","stroke-linejoin","round","stroke-width","2","d","M8 16H6a2 2 0 01-2-2V6a2 2 0 012-2h8a2 2 0 012 2v2m-6 12h8a2 2 0 002-2v-8a2 2 0 00-2-2h-8a2 2 0 00-2 2v8a2 2 0 002 2z"],[1,"flex","items-center","justify-between","p-3","bg-blue-50","border","border-blue-200","rounded-lg"],[1,"text-sm","text-blue-700","font-mono"],["aria-label","Copy",1,"text-blue-400","hover:text-blue-600","transition-colors",3,"click"],[1,"grid","grid-cols-2","gap-4"],[1,"block","text-xs","font-semibold","text-gray-500","uppercase","tracking-wider","mb-1"],["class","p-4 bg-purple-50 border border-purple-200 rounded-lg",4,"ngIf"],[1,"text-sm","text-gray-600"],[1,"p-4","bg-purple-50","border","border-purple-200","rounded-lg"],[1,"text-sm","font-medium","text-purple-900","mb-3"],[1,"space-y-2"],[1,"text-xs","font-semibold","text-purple-700","uppercase","tracking-wider"],[1,"text-sm","text-purple-900"],[1,"text-sm","text-purple-900","font-mono","break-all"],[1,"flex","items-center","justify-between","w-full","text-sm","font-medium","text-gray-700","hover:text-gray-900","transition-colors",3,"click"],["fill","none","stroke","currentColor","viewBox","0 0 24 24",1,"w-4","h-4","transition-transform"],["stroke-linecap","round","stroke-linejoin","round","stroke-width","2","d","M19 9l-7 7-7-7"],["class","mt-2 space-y-1",4,"ngIf"],[1,"mt-2","space-y-1"],["class","flex items-center gap-2 p-2 bg-gray-50 rounded text-xs text-gray-600",4,"ngFor","ngForOf"],[1,"flex","items-center","gap-2","p-2","bg-gray-50","rounded","text-xs","text-gray-600"],["stroke-linecap","round","stroke-linejoin","round","stroke-width","2","d","M12 8v4l3 3m6-3a9 9 0 11-18 0 9 9 0 0118 0z"]],template:function(e,i){if(e&1){let r=T();s(0,"div",1)(1,"header",2)(2,"div",3)(3,"div",4)(4,"div",5),b(),s(5,"svg",6),g(6,"path",7),l()(),S(),s(7,"div")(8,"h1",8),u(9,"RDF Data Sources Management"),l(),s(10,"p",9),u(11,"Named graphs and RDF subgraphs"),l()()(),s(12,"div",4)(13,"button",10),_("click",function(){return y(r),v(i.router.navigate(["/gestion-projets"]))}),b(),s(14,"svg",11),g(15,"path",12),l(),S(),s(16,"span",13),u(17,"Projects"),l()(),s(18,"button",10),_("click",function(){return y(r),v(i.router.navigate(["/gestion-ressources"]))}),s(19,"span",13),u(20,"Resources"),l(),b(),s(21,"svg",14),g(22,"path",12),l()(),S(),s(23,"div",15),b(),s(24,"svg",11),g(25,"path",16),l(),S(),s(26,"span",13),u(27),l()()()()(),s(28,"div",17)(29,"main",18)(30,"div",19)(31,"div",20)(32,"div",21),b(),s(33,"svg",22),g(34,"path",23),l(),S(),s(35,"span")(36,"strong"),u(37),l(),u(38," data source(s)"),l()(),w(39,Ju,3,0,"div",24),l(),s(40,"div",25),w(41,ep,5,0,"button",26)(42,tp,6,0,"div",27),g(43,"div",28),s(44,"div",29)(45,"div",30)(46,"input",31,0),_("change",function(a){return y(r),v(i.onFileSelected(a))}),l(),s(48,"button",32),_("click",function(){y(r);let a=wt(47);return v(a.click())}),b(),s(49,"svg",33),g(50,"path",34),l()()(),S(),s(51,"div",30)(52,"button",35),_("click",function(){return y(r),v(i.toggleFilterMenu())}),b(),s(53,"svg",36),g(54,"path",37),l()(),w(55,rp,20,20,"div",38),l(),S(),s(56,"div",30)(57,"button",39),_("click",function(){return y(r),v(i.showExportMenu=!i.showExportMenu)}),b(),s(58,"svg",36),g(59,"path",40),l()(),w(60,op,17,0,"div",41),l()()(),w(61,cp,46,14,"div",42)(62,_p,27,2,"div",43)(63,yp,11,0,"div",44),l()(),w(64,Tp,44,24,"aside",45),l()()}e&2&&(d(27),D("",i.dataSources.length," sources"),d(10),j(i.dataSources.length),d(2),f("ngIf",i.showForm),d(2),f("ngIf",!i.showForm),d(),f("ngIf",!i.canCreateInternalSource()),d(10),I("bg-blue-50",i.showFilterMenu)("border-blue-300",i.showFilterMenu),d(),I("text-blue-600",i.showFilterMenu)("text-gray-600",!i.showFilterMenu),d(2),f("ngIf",i.showFilterMenu),d(2),I("bg-blue-50",i.showExportMenu)("border-blue-300",i.showExportMenu),d(),I("text-blue-600",i.showExportMenu)("text-gray-600",!i.showExportMenu),d(2),f("ngIf",i.showExportMenu),d(),f("ngIf",i.showForm),d(),f("ngIf",i.dataSources.length>0),d(),f("ngIf",i.dataSources.length===0&&!i.showForm),d(),f("ngIf",i.selectedDataSource))},dependencies:[be,nt,He,oi,rt,wn,li,ci,Ct,si,St,xn,kt,Et,Cn,Sn,ps,mc,Lt,pc,_a,ys,yc,Ue,mi,vs,va],styles:["@keyframes _ngcontent-%COMP%_fade-in{0%{opacity:0}to{opacity:1}}@keyframes _ngcontent-%COMP%_slide-in{0%{transform:translate(100%);opacity:0}to{transform:translate(0);opacity:1}}@keyframes _ngcontent-%COMP%_slide-down{0%{transform:translateY(-10px);opacity:0}to{transform:translateY(0);opacity:1}}.animate-fade-in[_ngcontent-%COMP%]{animation:_ngcontent-%COMP%_fade-in .3s ease-in-out}.animate-slide-in[_ngcontent-%COMP%]{animation:_ngcontent-%COMP%_slide-in .3s ease-out} .snackbar-success{background:#10b981!important;color:#fff!important} .snackbar-error{background:#ef4444!important;color:#fff!important} .snackbar-warning{background:#f59e0b!important;color:#fff!important} .snackbar-info{background:#3b82f6!important;color:#fff!important}[_ngcontent-%COMP%]::-webkit-scrollbar{width:8px;height:8px}[_ngcontent-%COMP%]::-webkit-scrollbar-track{background:#f1f5f9}[_ngcontent-%COMP%]::-webkit-scrollbar-thumb{background:#cbd5e1;border-radius:4px}[_ngcontent-%COMP%]::-webkit-scrollbar-thumb:hover{background:#94a3b8}tr.group[_ngcontent-%COMP%]:hover .opacity-0[_ngcontent-%COMP%]{opacity:1}@media (max-width: 768px){.hidden-mobile[_ngcontent-%COMP%]{display:none}}.filter-container[_ngcontent-%COMP%]{position:relative}.filter-container[_ngcontent-%COMP%] .filter-button.active[_ngcontent-%COMP%]{background-color:#3f51b51a;color:#3f51b5}.filter-menu[_ngcontent-%COMP%]{position:absolute;top:50px;right:0;background:#fff;border-radius:8px;box-shadow:0 4px 12px #00000026;padding:16px;min-width:300px;z-index:1000}.filter-menu[_ngcontent-%COMP%] .filter-section[_ngcontent-%COMP%]{margin-bottom:16px}.filter-menu[_ngcontent-%COMP%] .filter-section[_ngcontent-%COMP%] h4[_ngcontent-%COMP%]{font-size:12px;font-weight:600;text-transform:uppercase;color:#666;margin:0 0 8px}.filter-menu[_ngcontent-%COMP%] .filter-section[_ngcontent-%COMP%] .filter-options[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;gap:8px}.filter-menu[_ngcontent-%COMP%] .filter-section[_ngcontent-%COMP%] .filter-options[_ngcontent-%COMP%] button[_ngcontent-%COMP%]{font-size:13px;padding:6px 12px;border:1px solid #ddd;border-radius:4px;background:#fff;transition:all .2s}.filter-menu[_ngcontent-%COMP%] .filter-section[_ngcontent-%COMP%] .filter-options[_ngcontent-%COMP%] button.active[_ngcontent-%COMP%]{background-color:#3f51b5;color:#fff;border-color:#3f51b5}.filter-menu[_ngcontent-%COMP%] .filter-section[_ngcontent-%COMP%] .filter-options[_ngcontent-%COMP%] button[_ngcontent-%COMP%]:hover:not(.active){background-color:#f5f5f5}.filter-menu[_ngcontent-%COMP%] .filter-section[_ngcontent-%COMP%] .search-field[_ngcontent-%COMP%]{width:100%;margin-top:8px}.filter-menu[_ngcontent-%COMP%] .filter-actions[_ngcontent-%COMP%]{border-top:1px solid #eee;padding-top:12px;text-align:right}.filter-menu[_ngcontent-%COMP%] .filter-actions[_ngcontent-%COMP%] button[_ngcontent-%COMP%]{color:#666;font-size:13px}.stats-dialog-overlay[_ngcontent-%COMP%]{position:fixed;inset:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:2000;animation:_ngcontent-%COMP%_fadeIn .2s}.stats-dialog[_ngcontent-%COMP%]{background:#fff;border-radius:12px;padding:24px;max-width:600px;width:90%;max-height:80vh;overflow-y:auto;box-shadow:0 8px 32px #0003;animation:_ngcontent-%COMP%_slideUp .3s}.stats-dialog[_ngcontent-%COMP%] .stats-header[_ngcontent-%COMP%]{display:flex;justify-content:space-between;align-items:center;margin-bottom:24px;padding-bottom:16px;border-bottom:2px solid #f0f0f0}.stats-dialog[_ngcontent-%COMP%] .stats-header[_ngcontent-%COMP%] h2[_ngcontent-%COMP%]{margin:0;font-size:24px;font-weight:600;color:#333}.stats-dialog[_ngcontent-%COMP%] .stats-content[_ngcontent-%COMP%]{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:16px}.stats-dialog[_ngcontent-%COMP%] .stat-card[_ngcontent-%COMP%]{background:linear-gradient(135deg,#f5f7fa,#c3cfe2);border-radius:12px;padding:20px;display:flex;align-items:center;gap:16px;transition:transform .2s}.stats-dialog[_ngcontent-%COMP%] .stat-card[_ngcontent-%COMP%]:hover{transform:translateY(-4px)}.stats-dialog[_ngcontent-%COMP%] .stat-card.full-width[_ngcontent-%COMP%]{grid-column:1/-1}.stats-dialog[_ngcontent-%COMP%] .stat-card[_ngcontent-%COMP%] .stat-icon[_ngcontent-%COMP%]{width:48px;height:48px;border-radius:50%;display:flex;align-items:center;justify-content:center;background:#fff;color:#3f51b5}.stats-dialog[_ngcontent-%COMP%] .stat-card[_ngcontent-%COMP%] .stat-icon.internal[_ngcontent-%COMP%]{background:#e3f2fd;color:#1976d2}.stats-dialog[_ngcontent-%COMP%] .stat-card[_ngcontent-%COMP%] .stat-icon.external[_ngcontent-%COMP%]{background:#f3e5f5;color:#7b1fa2}.stats-dialog[_ngcontent-%COMP%] .stat-card[_ngcontent-%COMP%] .stat-icon.editable[_ngcontent-%COMP%]{background:#e8f5e9;color:#388e3c}.stats-dialog[_ngcontent-%COMP%] .stat-card[_ngcontent-%COMP%] .stat-icon.readonly[_ngcontent-%COMP%]{background:#ffebee;color:#d32f2f}.stats-dialog[_ngcontent-%COMP%] .stat-card[_ngcontent-%COMP%] .stat-icon.tools[_ngcontent-%COMP%]{background:#fff3e0;color:#f57c00}.stats-dialog[_ngcontent-%COMP%] .stat-card[_ngcontent-%COMP%] .stat-icon[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{font-size:28px;width:28px;height:28px}.stats-dialog[_ngcontent-%COMP%] .stat-card[_ngcontent-%COMP%] .stat-info[_ngcontent-%COMP%]{flex:1}.stats-dialog[_ngcontent-%COMP%] .stat-card[_ngcontent-%COMP%] .stat-info[_ngcontent-%COMP%] .stat-value[_ngcontent-%COMP%]{font-size:32px;font-weight:700;color:#333;line-height:1;margin-bottom:4px}.stats-dialog[_ngcontent-%COMP%] .stat-card[_ngcontent-%COMP%] .stat-info[_ngcontent-%COMP%] .stat-label[_ngcontent-%COMP%]{font-size:13px;color:#666;text-transform:uppercase;letter-spacing:.5px}.stats-dialog[_ngcontent-%COMP%] .stat-card[_ngcontent-%COMP%] .stat-info[_ngcontent-%COMP%] .tools-list[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;gap:8px;margin-top:8px}.stats-dialog[_ngcontent-%COMP%] .stat-card[_ngcontent-%COMP%] .stat-info[_ngcontent-%COMP%] .tools-list[_ngcontent-%COMP%] .tool-chip[_ngcontent-%COMP%]{background:#fff;padding:4px 12px;border-radius:16px;font-size:12px;font-weight:500;color:#333}@keyframes _ngcontent-%COMP%_fadeIn{0%{opacity:0}to{opacity:1}}@keyframes _ngcontent-%COMP%_slideUp{0%{transform:translateY(20px);opacity:0}to{transform:translateY(0);opacity:1}}.stats-button[_ngcontent-%COMP%]:hover, .filter-button[_ngcontent-%COMP%]:hover, .export-button[_ngcontent-%COMP%]:hover{background-color:#3f51b514}"]})};var ba=new ne("CdkAccordion"),Fr=(()=>{class n{_stateChanges=new _e;_openCloseAllActions=new _e;id=k(Ni).getId("cdk-accordion-");multi=!1;openAll(){this.multi&&this._openCloseAllActions.next(!0)}closeAll(){this._openCloseAllActions.next(!1)}ngOnChanges(e){this._stateChanges.next(e)}ngOnDestroy(){this._stateChanges.complete(),this._openCloseAllActions.complete()}static \u0275fac=function(i){return new(i||n)};static \u0275dir=pe({type:n,selectors:[["cdk-accordion"],["","cdkAccordion",""]],inputs:{multi:[2,"multi","multi",ht]},exportAs:["cdkAccordion"],features:[De([{provide:ba,useExisting:n}]),Ve]})}return n})(),Nr=(()=>{class n{accordion=k(ba,{optional:!0,skipSelf:!0});_changeDetectorRef=k(Se);_expansionDispatcher=k(Rn);_openCloseAllSubscription=ii.EMPTY;closed=new se;opened=new se;destroyed=new se;expandedChange=new se;id=k(Ni).getId("cdk-accordion-child-");get expanded(){return this._expanded}set expanded(e){if(this._expanded!==e){if(this._expanded=e,this.expandedChange.emit(e),e){this.opened.emit();let i=this.accordion?this.accordion.id:this.id;this._expansionDispatcher.notify(this.id,i)}else this.closed.emit();this._changeDetectorRef.markForCheck()}}_expanded=!1;disabled=!1;_removeUniqueSelectionListener=()=>{};constructor(){}ngOnInit(){this._removeUniqueSelectionListener=this._expansionDispatcher.listen((e,i)=>{this.accordion&&!this.accordion.multi&&this.accordion.id===i&&this.id!==e&&(this.expanded=!1)}),this.accordion&&(this._openCloseAllSubscription=this._subscribeToOpenCloseAllActions())}ngOnDestroy(){this.opened.complete(),this.closed.complete(),this.destroyed.emit(),this.destroyed.complete(),this._removeUniqueSelectionListener(),this._openCloseAllSubscription.unsubscribe()}toggle(){this.disabled||(this.expanded=!this.expanded)}close(){this.disabled||(this.expanded=!1)}open(){this.disabled||(this.expanded=!0)}_subscribeToOpenCloseAllActions(){return this.accordion._openCloseAllActions.subscribe(e=>{this.disabled||(this.expanded=e)})}static \u0275fac=function(i){return new(i||n)};static \u0275dir=pe({type:n,selectors:[["cdk-accordion-item"],["","cdkAccordionItem",""]],inputs:{expanded:[2,"expanded","expanded",ht],disabled:[2,"disabled","disabled",ht]},outputs:{closed:"closed",opened:"opened",destroyed:"destroyed",expandedChange:"expandedChange"},exportAs:["cdkAccordionItem"],features:[De([{provide:ba,useValue:void 0}])]})}return n})(),jr=(()=>{class n{static \u0275fac=function(i){return new(i||n)};static \u0275mod=X({type:n});static \u0275inj=Y({})}return n})();var Pp=["body"],Ip=["bodyWrapper"],Ap=[[["mat-expansion-panel-header"]],"*",[["mat-action-row"]]],Op=["mat-expansion-panel-header","*","mat-action-row"];function Lp(n,t){}var Fp=[[["mat-panel-title"]],[["mat-panel-description"]],"*"],Np=["mat-panel-title","mat-panel-description","*"];function jp(n,t){n&1&&(s(0,"span",1),b(),s(1,"svg",2),g(2,"path",3),l()())}var xa=new ne("MAT_ACCORDION"),wc=new ne("MAT_EXPANSION_PANEL"),Vp=(()=>{class n{_template=k(Ha);_expansionPanel=k(wc,{optional:!0});constructor(){}static \u0275fac=function(i){return new(i||n)};static \u0275dir=pe({type:n,selectors:[["ng-template","matExpansionPanelContent",""]]})}return n})(),Cc=new ne("MAT_EXPANSION_PANEL_DEFAULT_OPTIONS"),wa=(()=>{class n extends Nr{_viewContainerRef=k(Ii);_animationsDisabled=k(Bt,{optional:!0})==="NoopAnimations";_document=k(Fi);_ngZone=k(ut);_elementRef=k(Pi);_renderer=k(so);_cleanupTransitionEnd;get hideToggle(){return this._hideToggle||this.accordion&&this.accordion.hideToggle}set hideToggle(e){this._hideToggle=e}_hideToggle=!1;get togglePosition(){return this._togglePosition||this.accordion&&this.accordion.togglePosition}set togglePosition(e){this._togglePosition=e}_togglePosition;afterExpand=new se;afterCollapse=new se;_inputChanges=new _e;accordion=k(xa,{optional:!0,skipSelf:!0});_lazyContent;_body;_bodyWrapper;_portal;_headerId=k(Ni).getId("mat-expansion-panel-header-");constructor(){super();let e=k(Cc,{optional:!0});this._expansionDispatcher=k(Rn),e&&(this.hideToggle=e.hideToggle)}_hasSpacing(){return this.accordion?this.expanded&&this.accordion.displayMode==="default":!1}_getExpandedState(){return this.expanded?"expanded":"collapsed"}toggle(){this.expanded=!this.expanded}close(){this.expanded=!1}open(){this.expanded=!0}ngAfterContentInit(){this._lazyContent&&this._lazyContent._expansionPanel===this&&this.opened.pipe(Ri(null),Qe(()=>this.expanded&&!this._portal),vt(1)).subscribe(()=>{this._portal=new hs(this._lazyContent._template,this._viewContainerRef)}),this._setupAnimationEvents()}ngOnChanges(e){this._inputChanges.next(e)}ngOnDestroy(){super.ngOnDestroy(),this._cleanupTransitionEnd?.(),this._inputChanges.complete()}_containsFocus(){if(this._body){let e=this._document.activeElement,i=this._body.nativeElement;return e===i||i.contains(e)}return!1}_transitionEndListener=({target:e,propertyName:i})=>{e===this._bodyWrapper?.nativeElement&&i==="grid-template-rows"&&this._ngZone.run(()=>{this.expanded?this.afterExpand.emit():this.afterCollapse.emit()})};_setupAnimationEvents(){this._ngZone.runOutsideAngular(()=>{this._animationsDisabled?(this.opened.subscribe(()=>this._ngZone.run(()=>this.afterExpand.emit())),this.closed.subscribe(()=>this._ngZone.run(()=>this.afterCollapse.emit()))):setTimeout(()=>{let e=this._elementRef.nativeElement;this._cleanupTransitionEnd=this._renderer.listen(e,"transitionend",this._transitionEndListener),e.classList.add("mat-expansion-panel-animations-enabled")},200)})}static \u0275fac=function(i){return new(i||n)};static \u0275cmp=q({type:n,selectors:[["mat-expansion-panel"]],contentQueries:function(i,r,o){if(i&1&&ri(o,Vp,5),i&2){let a;Be(a=Ge())&&(r._lazyContent=a.first)}},viewQuery:function(i,r){if(i&1&&(it(Pp,5),it(Ip,5)),i&2){let o;Be(o=Ge())&&(r._body=o.first),Be(o=Ge())&&(r._bodyWrapper=o.first)}},hostAttrs:[1,"mat-expansion-panel"],hostVars:4,hostBindings:function(i,r){i&2&&I("mat-expanded",r.expanded)("mat-expansion-panel-spacing",r._hasSpacing())},inputs:{hideToggle:[2,"hideToggle","hideToggle",ht],togglePosition:"togglePosition"},outputs:{afterExpand:"afterExpand",afterCollapse:"afterCollapse"},exportAs:["matExpansionPanel"],features:[De([{provide:xa,useValue:void 0},{provide:wc,useExisting:n}]),ni,Ve],ngContentSelectors:Op,decls:9,vars:4,consts:[["bodyWrapper",""],["body",""],[1,"mat-expansion-panel-content-wrapper"],["role","region",1,"mat-expansion-panel-content",3,"id"],[1,"mat-expansion-panel-body"],[3,"cdkPortalOutlet"]],template:function(i,r){i&1&&(xt(Ap),ze(0),s(1,"div",2,0)(3,"div",3,1)(5,"div",4),ze(6,1),w(7,Lp,0,0,"ng-template",5),l(),ze(8,2),l()()),i&2&&(d(),he("inert",r.expanded?null:""),d(2),f("id",r.id),he("aria-labelledby",r._headerId),d(4),f("cdkPortalOutlet",r._portal))},dependencies:[fs],styles:[`.mat-expansion-panel{box-sizing:content-box;display:block;margin:0;overflow:hidden;position:relative;background:var(--mat-expansion-container-background-color, var(--mat-sys-surface));color:var(--mat-expansion-container-text-color, var(--mat-sys-on-surface));border-radius:var(--mat-expansion-container-shape, 12px)}.mat-expansion-panel.mat-expansion-panel-animations-enabled{transition:margin 225ms cubic-bezier(0.4, 0, 0.2, 1),box-shadow 280ms cubic-bezier(0.4, 0, 0.2, 1)}.mat-expansion-panel:not([class*=mat-elevation-z]){box-shadow:0px 3px 1px -2px rgba(0, 0, 0, 0.2), 0px 2px 2px 0px rgba(0, 0, 0, 0.14), 0px 1px 5px 0px rgba(0, 0, 0, 0.12)}.mat-accordion .mat-expansion-panel:not(.mat-expanded),.mat-accordion .mat-expansion-panel:not(.mat-expansion-panel-spacing){border-radius:0}.mat-accordion .mat-expansion-panel:first-of-type{border-top-right-radius:var(--mat-expansion-container-shape, 12px);border-top-left-radius:var(--mat-expansion-container-shape, 12px)}.mat-accordion .mat-expansion-panel:last-of-type{border-bottom-right-radius:var(--mat-expansion-container-shape, 12px);border-bottom-left-radius:var(--mat-expansion-container-shape, 12px)}@media(forced-colors: active){.mat-expansion-panel{outline:solid 1px}}.mat-expansion-panel-content-wrapper{display:grid;grid-template-rows:0fr;grid-template-columns:100%}.mat-expansion-panel-animations-enabled .mat-expansion-panel-content-wrapper{transition:grid-template-rows 225ms cubic-bezier(0.4, 0, 0.2, 1)}.mat-expansion-panel.mat-expanded>.mat-expansion-panel-content-wrapper{grid-template-rows:1fr}@supports not (grid-template-rows: 0fr){.mat-expansion-panel-content-wrapper{height:0}.mat-expansion-panel.mat-expanded>.mat-expansion-panel-content-wrapper{height:auto}}.mat-expansion-panel-content{display:flex;flex-direction:column;overflow:visible;min-height:0;visibility:hidden;font-family:var(--mat-expansion-container-text-font, var(--mat-sys-body-large-font));font-size:var(--mat-expansion-container-text-size, var(--mat-sys-body-large-size));font-weight:var(--mat-expansion-container-text-weight, var(--mat-sys-body-large-weight));line-height:var(--mat-expansion-container-text-line-height, var(--mat-sys-body-large-line-height));letter-spacing:var(--mat-expansion-container-text-tracking, var(--mat-sys-body-large-tracking))}.mat-expansion-panel-animations-enabled .mat-expansion-panel-content{transition:visibility 190ms linear}.mat-expansion-panel.mat-expanded>.mat-expansion-panel-content-wrapper>.mat-expansion-panel-content{visibility:visible}.mat-expansion-panel-body{padding:0 24px 16px}.mat-expansion-panel-spacing{margin:16px 0}.mat-accordion>.mat-expansion-panel-spacing:first-child,.mat-accordion>*:first-child:not(.mat-expansion-panel) .mat-expansion-panel-spacing{margin-top:0}.mat-accordion>.mat-expansion-panel-spacing:last-child,.mat-accordion>*:last-child:not(.mat-expansion-panel) .mat-expansion-panel-spacing{margin-bottom:0}.mat-action-row{border-top-style:solid;border-top-width:1px;display:flex;flex-direction:row;justify-content:flex-end;padding:16px 8px 16px 24px;border-top-color:var(--mat-expansion-actions-divider-color, var(--mat-sys-outline))}.mat-action-row .mat-button-base,.mat-action-row .mat-mdc-button-base{margin-left:8px}[dir=rtl] .mat-action-row .mat-button-base,[dir=rtl] .mat-action-row .mat-mdc-button-base{margin-left:0;margin-right:8px}
+`],encapsulation:2,changeDetection:0})}return n})();var Ca=(()=>{class n{panel=k(wa,{host:!0});_element=k(Pi);_focusMonitor=k(uo);_changeDetectorRef=k(Se);_parentChangeSubscription=ii.EMPTY;constructor(){k(ls).load(us);let e=this.panel,i=k(Cc,{optional:!0}),r=k(new oo("tabindex"),{optional:!0}),o=e.accordion?e.accordion._stateChanges.pipe(Qe(a=>!!(a.hideToggle||a.togglePosition))):We;this.tabIndex=parseInt(r||"")||0,this._parentChangeSubscription=Aa(e.opened,e.closed,o,e._inputChanges.pipe(Qe(a=>!!(a.hideToggle||a.disabled||a.togglePosition)))).subscribe(()=>this._changeDetectorRef.markForCheck()),e.closed.pipe(Qe(()=>e._containsFocus())).subscribe(()=>this._focusMonitor.focusVia(this._element,"program")),i&&(this.expandedHeight=i.expandedHeight,this.collapsedHeight=i.collapsedHeight)}expandedHeight;collapsedHeight;tabIndex=0;get disabled(){return this.panel.disabled}_toggle(){this.disabled||this.panel.toggle()}_isExpanded(){return this.panel.expanded}_getExpandedState(){return this.panel._getExpandedState()}_getPanelId(){return this.panel.id}_getTogglePosition(){return this.panel.togglePosition}_showToggle(){return!this.panel.hideToggle&&!this.panel.disabled}_getHeaderHeight(){let e=this._isExpanded();return e&&this.expandedHeight?this.expandedHeight:!e&&this.collapsedHeight?this.collapsedHeight:null}_keydown(e){switch(e.keyCode){case 32:case 13:ds(e)||(e.preventDefault(),this._toggle());break;default:this.panel.accordion&&this.panel.accordion._handleHeaderKeydown(e);return}}focus(e,i){e?this._focusMonitor.focusVia(this._element,e,i):this._element.nativeElement.focus(i)}ngAfterViewInit(){this._focusMonitor.monitor(this._element).subscribe(e=>{e&&this.panel.accordion&&this.panel.accordion._handleHeaderFocus(this)})}ngOnDestroy(){this._parentChangeSubscription.unsubscribe(),this._focusMonitor.stopMonitoring(this._element)}static \u0275fac=function(i){return new(i||n)};static \u0275cmp=q({type:n,selectors:[["mat-expansion-panel-header"]],hostAttrs:["role","button",1,"mat-expansion-panel-header","mat-focus-indicator"],hostVars:13,hostBindings:function(i,r){i&1&&_("click",function(){return r._toggle()})("keydown",function(a){return r._keydown(a)}),i&2&&(he("id",r.panel._headerId)("tabindex",r.disabled?-1:r.tabIndex)("aria-controls",r._getPanelId())("aria-expanded",r._isExpanded())("aria-disabled",r.panel.disabled),fn("height",r._getHeaderHeight()),I("mat-expanded",r._isExpanded())("mat-expansion-toggle-indicator-after",r._getTogglePosition()==="after")("mat-expansion-toggle-indicator-before",r._getTogglePosition()==="before"))},inputs:{expandedHeight:"expandedHeight",collapsedHeight:"collapsedHeight",tabIndex:[2,"tabIndex","tabIndex",e=>e==null?0:mo(e)]},ngContentSelectors:Np,decls:5,vars:3,consts:[[1,"mat-content"],[1,"mat-expansion-indicator"],["xmlns","http://www.w3.org/2000/svg","viewBox","0 -960 960 960","aria-hidden","true","focusable","false"],["d","M480-345 240-585l56-56 184 184 184-184 56 56-240 240Z"]],template:function(i,r){i&1&&(xt(Fp),s(0,"span",0),ze(1),ze(2,1),ze(3,2),l(),w(4,jp,3,0,"span",1)),i&2&&(I("mat-content-hide-toggle",!r._showToggle()),d(4),W(r._showToggle()?4:-1))},styles:[`.mat-expansion-panel-header{display:flex;flex-direction:row;align-items:center;padding:0 24px;border-radius:inherit;height:var(--mat-expansion-header-collapsed-state-height, 48px);font-family:var(--mat-expansion-header-text-font, var(--mat-sys-title-medium-font));font-size:var(--mat-expansion-header-text-size, var(--mat-sys-title-medium-size));font-weight:var(--mat-expansion-header-text-weight, var(--mat-sys-title-medium-weight));line-height:var(--mat-expansion-header-text-line-height, var(--mat-sys-title-medium-line-height));letter-spacing:var(--mat-expansion-header-text-tracking, var(--mat-sys-title-medium-tracking))}.mat-expansion-panel-animations-enabled .mat-expansion-panel-header{transition:height 225ms cubic-bezier(0.4, 0, 0.2, 1)}.mat-expansion-panel-header::before{border-radius:inherit}.mat-expansion-panel-header.mat-expanded{height:var(--mat-expansion-header-expanded-state-height, 64px)}.mat-expansion-panel-header[aria-disabled=true]{color:var(--mat-expansion-header-disabled-state-text-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}.mat-expansion-panel-header:not([aria-disabled=true]){cursor:pointer}.mat-expansion-panel:not(.mat-expanded) .mat-expansion-panel-header:not([aria-disabled=true]):hover{background:var(--mat-expansion-header-hover-state-layer-color, color-mix(in srgb, var(--mat-sys-on-surface) calc(var(--mat-sys-hover-state-layer-opacity) * 100%), transparent))}@media(hover: none){.mat-expansion-panel:not(.mat-expanded) .mat-expansion-panel-header:not([aria-disabled=true]):hover{background:var(--mat-expansion-container-background-color, var(--mat-sys-surface))}}.mat-expansion-panel .mat-expansion-panel-header:not([aria-disabled=true]).cdk-keyboard-focused,.mat-expansion-panel .mat-expansion-panel-header:not([aria-disabled=true]).cdk-program-focused{background:var(--mat-expansion-header-focus-state-layer-color, color-mix(in srgb, var(--mat-sys-on-surface) calc(var(--mat-sys-focus-state-layer-opacity) * 100%), transparent))}.mat-expansion-panel-header._mat-animation-noopable{transition:none}.mat-expansion-panel-header:focus,.mat-expansion-panel-header:hover{outline:none}.mat-expansion-panel-header.mat-expanded:focus,.mat-expansion-panel-header.mat-expanded:hover{background:inherit}.mat-expansion-panel-header.mat-expansion-toggle-indicator-before{flex-direction:row-reverse}.mat-expansion-panel-header.mat-expansion-toggle-indicator-before .mat-expansion-indicator{margin:0 16px 0 0}[dir=rtl] .mat-expansion-panel-header.mat-expansion-toggle-indicator-before .mat-expansion-indicator{margin:0 0 0 16px}.mat-content{display:flex;flex:1;flex-direction:row;overflow:hidden}.mat-content.mat-content-hide-toggle{margin-right:8px}[dir=rtl] .mat-content.mat-content-hide-toggle{margin-right:0;margin-left:8px}.mat-expansion-toggle-indicator-before .mat-content.mat-content-hide-toggle{margin-left:24px;margin-right:0}[dir=rtl] .mat-expansion-toggle-indicator-before .mat-content.mat-content-hide-toggle{margin-right:24px;margin-left:0}.mat-expansion-panel-header-title{color:var(--mat-expansion-header-text-color, var(--mat-sys-on-surface))}.mat-expansion-panel-header-title,.mat-expansion-panel-header-description{display:flex;flex-grow:1;flex-basis:0;margin-right:16px;align-items:center}[dir=rtl] .mat-expansion-panel-header-title,[dir=rtl] .mat-expansion-panel-header-description{margin-right:0;margin-left:16px}.mat-expansion-panel-header[aria-disabled=true] .mat-expansion-panel-header-title,.mat-expansion-panel-header[aria-disabled=true] .mat-expansion-panel-header-description{color:inherit}.mat-expansion-panel-header-description{flex-grow:2;color:var(--mat-expansion-header-description-color, var(--mat-sys-on-surface-variant))}.mat-expansion-panel-animations-enabled .mat-expansion-indicator{transition:transform 225ms cubic-bezier(0.4, 0, 0.2, 1)}.mat-expansion-panel-header.mat-expanded .mat-expansion-indicator{transform:rotate(180deg)}.mat-expansion-indicator::after{border-style:solid;border-width:0 2px 2px 0;content:"";display:inline-block;padding:3px;transform:rotate(45deg);vertical-align:middle;color:var(--mat-expansion-header-indicator-color, var(--mat-sys-on-surface-variant));display:var(--mat-expansion-legacy-header-indicator-display, none)}.mat-expansion-indicator svg{width:24px;height:24px;margin:0 -8px;vertical-align:middle;fill:var(--mat-expansion-header-indicator-color, var(--mat-sys-on-surface-variant));display:var(--mat-expansion-header-indicator-display, inline-block)}@media(forced-colors: active){.mat-expansion-panel-content{border-top:1px solid;border-top-left-radius:0;border-top-right-radius:0}}
+`],encapsulation:2,changeDetection:0})}return n})(),Sc=(()=>{class n{static \u0275fac=function(i){return new(i||n)};static \u0275dir=pe({type:n,selectors:[["mat-panel-description"]],hostAttrs:[1,"mat-expansion-panel-header-description"]})}return n})(),kc=(()=>{class n{static \u0275fac=function(i){return new(i||n)};static \u0275dir=pe({type:n,selectors:[["mat-panel-title"]],hostAttrs:[1,"mat-expansion-panel-header-title"]})}return n})(),Ec=(()=>{class n extends Fr{_keyManager;_ownHeaders=new Ga;_headers;hideToggle=!1;displayMode="default";togglePosition="after";ngAfterContentInit(){this._headers.changes.pipe(Ri(this._headers)).subscribe(e=>{this._ownHeaders.reset(e.filter(i=>i.panel.accordion===this)),this._ownHeaders.notifyOnChanges()}),this._keyManager=new ms(this._ownHeaders).withWrap().withHomeAndEnd()}_handleHeaderKeydown(e){this._keyManager.onKeydown(e)}_handleHeaderFocus(e){this._keyManager.updateActiveItem(e)}ngOnDestroy(){super.ngOnDestroy(),this._keyManager?.destroy(),this._ownHeaders.destroy()}static \u0275fac=(()=>{let e;return function(r){return(e||(e=zt(n)))(r||n)}})();static \u0275dir=pe({type:n,selectors:[["mat-accordion"]],contentQueries:function(i,r,o){if(i&1&&ri(o,Ca,5),i&2){let a;Be(a=Ge())&&(r._headers=a)}},hostAttrs:[1,"mat-accordion"],hostVars:2,hostBindings:function(i,r){i&2&&I("mat-accordion-multi",r.multi)},inputs:{hideToggle:[2,"hideToggle","hideToggle",ht],displayMode:"displayMode",togglePosition:"togglePosition"},exportAs:["matAccordion"],features:[De([{provide:xa,useExisting:n}]),ni]})}return n})(),Tc=(()=>{class n{static \u0275fac=function(i){return new(i||n)};static \u0275mod=X({type:n});static \u0275inj=Y({imports:[ee,jr,gs]})}return n})();var Mc=(()=>{class n{static \u0275fac=function(i){return new(i||n)};static \u0275mod=X({type:n});static \u0275inj=Y({imports:[En,ee,Tn,Ir,An]})}return n})();var Vr=class{items=[];push(t){this.items.push(t)}pop(){return this.items.pop()}peek(){return this.items[this.items.length-1]}isEmpty(){return this.items.length===0}size(){return this.items.length}clear(){this.items=[]}toString(){return this.items.toString()}};var zr=class n{constructor(t,e){this.dialogRef=t;this.data=e}onCancel(){this.dialogRef.close(!1)}onConfirm(){this.dialogRef.close(!0)}static \u0275fac=function(e){return new(e||n)(K(Pn),K(In))};static \u0275cmp=q({type:n,selectors:[["app-confirm-delete-dialog"]],decls:28,vars:2,consts:[[1,"p-6","max-w-md"],[1,"flex","items-start","gap-4","mb-6"],[1,"flex-shrink-0","w-10","h-10","rounded-full","bg-red-100","flex","items-center","justify-center"],["fill","none","stroke","currentColor","viewBox","0 0 24 24",1,"w-5","h-5","text-red-600"],["stroke-linecap","round","stroke-linejoin","round","stroke-width","2","d","M12 9v2m0 4h.01M10.29 3.86L1.82 18a2 2 0 001.71 3h16.94a2 2 0 001.71-3L13.71 3.86a2 2 0 00-3.42 0z"],[1,"text-lg","font-semibold","text-gray-900"],[1,"mt-1","text-sm","text-gray-500"],[1,"mb-6","rounded-lg","border","border-red-200","bg-red-50","p-4","space-y-2"],[1,"text-xs","font-semibold","text-gray-500","uppercase","tracking-wider"],[1,"mt-0.5","text-sm","font-medium","text-gray-900"],[1,"mt-0.5","text-xs","font-mono","text-gray-600","break-all"],[1,"flex","gap-3","justify-end"],[1,"cursor-pointer","px-4","py-2","text-sm","font-medium","text-gray-700","border","border-gray-300","rounded-lg","hover:bg-gray-50","transition-colors",3,"click"],[1,"cursor-pointer","px-4","py-2","text-sm","font-medium","text-white","bg-red-600","rounded-lg","hover:bg-red-700","transition-colors","flex","items-center","gap-2",3,"click"],["fill","none","stroke","currentColor","viewBox","0 0 24 24",1,"w-4","h-4"],["stroke-linecap","round","stroke-linejoin","round","stroke-width","2","d","M19 7l-.867 12.142A2 2 0 0116.138 21H7.862a2 2 0 01-1.995-1.858L5 7m5 4v6m4-6v6m1-10V4a1 1 0 00-1-1h-4a1 1 0 00-1 1v3M4 7h16"]],template:function(e,i){e&1&&(s(0,"div",0)(1,"div",1)(2,"div",2),b(),s(3,"svg",3),g(4,"path",4),l()(),S(),s(5,"div")(6,"h2",5),u(7,"Delete Entity"),l(),s(8,"p",6),u(9,"This action is irreversible."),l()()(),s(10,"div",7)(11,"div")(12,"span",8),u(13,"Label"),l(),s(14,"p",9),u(15),l()(),s(16,"div")(17,"span",8),u(18,"IRI"),l(),s(19,"p",10),u(20),l()()(),s(21,"div",11)(22,"button",12),_("click",function(){return i.onCancel()}),u(23," Annuler "),l(),s(24,"button",13),_("click",function(){return i.onConfirm()}),b(),s(25,"svg",14),g(26,"path",15),l(),u(27," Delete "),l()()()),e&2&&(d(15),j(i.data.entityLabel),d(5),j(i.data.entityIri))},dependencies:[be,Ue],encapsulation:2})};var Br=class n{constructor(t,e){this.dialogRef=t;this.data=e}onCancel(){this.dialogRef.close(!1)}onConfirm(){this.dialogRef.close(!0)}static \u0275fac=function(e){return new(e||n)(K(Pn),K(In))};static \u0275cmp=q({type:n,selectors:[["app-confirm-delete-property"]],decls:33,vars:3,consts:[[1,"p-6","max-w-md"],[1,"flex","items-start","gap-4","mb-6"],[1,"flex-shrink-0","w-10","h-10","rounded-full","bg-red-100","flex","items-center","justify-center"],["fill","none","stroke","currentColor","viewBox","0 0 24 24",1,"w-5","h-5","text-red-600"],["stroke-linecap","round","stroke-linejoin","round","stroke-width","2","d","M12 9v2m0 4h.01M10.29 3.86L1.82 18a2 2 0 001.71 3h16.94a2 2 0 001.71-3L13.71 3.86a2 2 0 00-3.42 0z"],[1,"text-lg","font-semibold","text-gray-900"],[1,"mt-1","text-sm","text-gray-500"],[1,"mb-6","rounded-lg","border","border-red-200","bg-red-50","p-4","space-y-2"],[1,"text-xs","font-semibold","text-gray-500","uppercase","tracking-wider"],[1,"mt-0.5","text-xs","font-mono","text-gray-600","break-all"],[1,"mt-0.5","text-sm","font-medium","text-gray-900"],[1,"flex","gap-3","justify-end"],[1,"cursor-pointer","px-4","py-2","text-sm","font-medium","text-gray-700","border","border-gray-300","rounded-lg","hover:bg-gray-50","transition-colors",3,"click"],[1,"cursor-pointer","px-4","py-2","text-sm","font-medium","text-white","bg-red-600","rounded-lg","hover:bg-red-700","transition-colors","flex","items-center","gap-2",3,"click"],["fill","none","stroke","currentColor","viewBox","0 0 24 24",1,"w-4","h-4"],["stroke-linecap","round","stroke-linejoin","round","stroke-width","2","d","M19 7l-.867 12.142A2 2 0 0116.138 21H7.862a2 2 0 01-1.995-1.858L5 7m5 4v6m4-6v6m1-10V4a1 1 0 00-1-1h-4a1 1 0 00-1 1v3M4 7h16"]],template:function(e,i){e&1&&(s(0,"div",0)(1,"div",1)(2,"div",2),b(),s(3,"svg",3),g(4,"path",4),l()(),S(),s(5,"div")(6,"h2",5),u(7,"Delete Property"),l(),s(8,"p",6),u(9,"This action is irreversible."),l()()(),s(10,"div",7)(11,"div")(12,"span",8),u(13,"Entity IRI"),l(),s(14,"p",9),u(15),l()(),s(16,"div")(17,"span",8),u(18,"Property"),l(),s(19,"p",10),u(20),l()(),s(21,"div")(22,"span",8),u(23,"Value"),l(),s(24,"p",10),u(25),l()()(),s(26,"div",11)(27,"button",12),_("click",function(){return i.onCancel()}),u(28," Annuler "),l(),s(29,"button",13),_("click",function(){return i.onConfirm()}),b(),s(30,"svg",14),g(31,"path",15),l(),u(32," Delete "),l()()()),e&2&&(d(15),j(i.data.entityIri),d(5),j(i.data.propertyLabel),d(5),j(i.data.value))},dependencies:[be,Ue],encapsulation:2})};function Bp(n,t){if(n&1){let e=T();s(0,"button",13),_("click",function(){let r=y(e).$implicit,o=h(2);return v(o.detailTab=r.key)}),u(1),l()}if(n&2){let e=t.$implicit,i=h(2);I("bg-white",i.detailTab===e.key)("text-gray-900",i.detailTab===e.key)("shadow-sm",i.detailTab===e.key),d(),j(e.key)}}function Gp(n,t){if(n&1&&(s(0,"div",11),w(1,Bp,2,7,"button",12),Re(2,"keyvalue"),l()),n&2){let e=t.$implicit;d(),f("ngForOf",yn(2,1,e))}}function Hp(n,t){if(n&1){let e=T();s(0,"button",39),_("click",function(){y(e);let r=h(2).$implicit,o=h(2);return v(o.openFileViewer(r,r.value))}),b(),s(1,"svg",20),g(2,"path",40)(3,"path",41),l()()}}function Up(n,t){if(n&1&&(s(0,"span",42),u(1),l()),n&2){let e=h(2).$implicit;d(),j(e.name)}}function $p(n,t){if(n&1){let e=T();s(0,"input",43),de("ngModelChange",function(r){y(e);let o=h(2).$implicit;return ce(o.value,r)||(o.value=r),v(r)}),l()}if(n&2){let e=h(2).$implicit,i=h(2);I("cursor-default",!(i.selectedEntity!=null&&i.selectedEntity.editable)),le("ngModel",e.value),f("readonly",!(i.selectedEntity!=null&&i.selectedEntity.editable))}}function qp(n,t){if(n&1){let e=T();s(0,"a",44),_("click",function(r){y(e);let o=h(2).$implicit;return h(2).changeSelectedEntity(o.value),v(r.preventDefault())}),u(1),l()}if(n&2){let e=h(2).$implicit;d(),D(" ",e.value," ")}}function Wp(n,t){if(n&1){let e=T();s(0,"input",45),de("ngModelChange",function(r){y(e);let o=h(2).$implicit;return ce(o.value,r)||(o.value=r),v(r)}),_("keydown.enter",function(){y(e);let r=h(2).$implicit;return v(r.editing=!1)})("keydown.escape",function(){y(e);let r=h(2).$implicit;return v(r.editing=!1)}),l()}if(n&2){let e=h(2).$implicit;le("ngModel",e.value)}}function Qp(n,t){n&1&&(b(),s(0,"svg",49),g(1,"path",50),l())}function Kp(n,t){n&1&&(b(),s(0,"svg",51),g(1,"path",52),l())}function Yp(n,t){if(n&1){let e=T();s(0,"button",46),_("click",function(){y(e);let r=h(2).$implicit;return v(r.editing=!r.editing)}),w(1,Qp,2,0,"svg",47)(2,Kp,2,0,"svg",48),l()}if(n&2){let e=h(2).$implicit;he("aria-label",e.editing?"Confirmer":"Modifier"),d(),f("ngIf",!e.editing),d(),f("ngIf",e.editing)}}function Xp(n,t){if(n&1){let e=T();s(0,"button",53),_("click",function(){y(e);let r=h(2).$implicit,o=h(2);return v(o.removeProperty(r))}),b(),s(1,"svg",20),g(2,"path",8),l()()}}function Zp(n,t){if(n&1&&(s(0,"div")(1,"label",31),u(2),w(3,Hp,4,0,"button",32),l(),w(4,Up,2,1,"span",33),s(5,"div",17),w(6,$p,1,4,"input",34)(7,qp,2,1,"a",35)(8,Wp,1,1,"input",36)(9,Yp,3,3,"button",37)(10,Xp,3,0,"button",38),l()()),n&2){let e=h().$implicit,i=h(2);d(2),D(" ",e.key," "),d(),f("ngIf",e.key==="identifier"&&i.isFilePath(e.value)),d(),f("ngIf",e.kind==="iri"),d(2),f("ngIf",e.kind==="literal"),d(),f("ngIf",e.kind==="iri"&&!e.editing),d(),f("ngIf",e.kind==="iri"&&e.editing),d(),f("ngIf",e.kind==="iri"&&(i.selectedEntity==null?null:i.selectedEntity.editable)),d(),f("ngIf",i.selectedEntity==null?null:i.selectedEntity.editable)}}function Jp(n,t){if(n&1&&(Gt(0,15),w(1,Zp,11,8,"div",30),Ht()),n&2){let e=t.$implicit,i=h(2);d(),f("ngIf",e.ontology===i.detailTab)}}function eh(n,t){if(n&1){let e=T();s(0,"button",54),_("click",function(){y(e);let r=h(2);return v(r.addAssociation())}),b(),s(1,"svg",20),g(2,"path",55),l(),u(3," Add property "),l()}}function th(n,t){if(n&1&&(s(0,"option",66),u(1),s(2,"span",67),u(3),l()()),n&2){let e=t.$implicit;f("value",e.predicate),d(),D(" ",e.key," \u2014 "),d(2),j(e.predicate)}}function ih(n,t){if(n&1){let e=T();s(0,"div")(1,"label",57),u(2,"Predicate"),l(),s(3,"select",63),de("ngModelChange",function(r){y(e);let o=h(3);return ce(o.newAssociation.predicate,r)||(o.newAssociation.predicate=r),v(r)}),s(4,"option",64),u(5,"Select a predicate..."),l(),w(6,th,4,3,"option",65),l()()}if(n&2){let e=h(3);d(3),le("ngModel",e.newAssociation.predicate),d(3),f("ngForOf",e.entityPropertiesDict)}}function nh(n,t){if(n&1&&(s(0,"option",66),u(1),s(2,"span",72),u(3),l()()),n&2){let e=t.$implicit;f("value",e.url),d(),D(" ",e.label," \u2014 "),d(2),j(e.url)}}function rh(n,t){if(n&1&&(s(0,"span",73),u(1),l()),n&2){let e=h(4);d(),D(" ",e.newAssociation.ontologyUrl," ")}}function oh(n,t){if(n&1&&(s(0,"p",74),u(1),l()),n&2){let e=h(4);d(),_n(" \u2192 ",e.newAssociation.ontologyUrl,"",e.newAssociation.customPredicate," ")}}function ah(n,t){if(n&1){let e=T();Gt(0),s(1,"div")(2,"label",57),u(3,"Ontology namespace"),l(),s(4,"select",63),de("ngModelChange",function(r){y(e);let o=h(3);return ce(o.newAssociation.ontologyUrl,r)||(o.newAssociation.ontologyUrl=r),v(r)}),s(5,"option",64),u(6,"Select an ontology..."),l(),w(7,nh,4,3,"option",65),l()(),s(8,"div")(9,"label",57),u(10,"Predicate name"),l(),s(11,"div",68),w(12,rh,2,1,"span",69),s(13,"input",70),de("ngModelChange",function(r){y(e);let o=h(3);return ce(o.newAssociation.customPredicate,r)||(o.newAssociation.customPredicate=r),v(r)}),l()(),w(14,oh,2,2,"p",71),l(),Ht()}if(n&2){let e=h(3);d(4),le("ngModel",e.newAssociation.ontologyUrl),d(3),f("ngForOf",e.ontologyEntries),d(5),f("ngIf",e.newAssociation.ontologyUrl),d(),le("ngModel",e.newAssociation.customPredicate),d(),f("ngIf",e.newAssociation.ontologyUrl&&e.newAssociation.customPredicate)}}function sh(n,t){if(n&1){let e=T();s(0,"div")(1,"label",57),u(2,"Type"),l(),s(3,"div",58)(4,"button",75),_("click",function(){y(e);let r=h(3);return v(r.newAssociation.kind="literal")}),u(5," Literal "),l(),s(6,"button",75),_("click",function(){y(e);let r=h(3);return v(r.newAssociation.kind="iri")}),u(7," IRI "),l()()()}if(n&2){let e=h(3);d(4),I("bg-blue-600",e.newAssociation.kind==="literal")("text-white",e.newAssociation.kind==="literal")("bg-white",e.newAssociation.kind!=="literal")("text-gray-600",e.newAssociation.kind!=="literal"),d(2),I("bg-blue-600",e.newAssociation.kind==="iri")("text-white",e.newAssociation.kind==="iri")("bg-white",e.newAssociation.kind!=="iri")("text-gray-600",e.newAssociation.kind!=="iri")}}function lh(n,t){if(n&1){let e=T();s(0,"div")(1,"label",57),u(2,"Value"),l(),s(3,"input",76),de("ngModelChange",function(r){y(e);let o=h(3);return ce(o.newAssociation.value,r)||(o.newAssociation.value=r),v(r)}),l()()}if(n&2){let e=h(3);d(3),le("ngModel",e.newAssociation.value),f("placeholder",e.newAssociation.kind==="iri"?"https://...":"Enter a value")}}function ch(n,t){if(n&1){let e=T();s(0,"div",56)(1,"div")(2,"label",57),u(3,"Predicate source"),l(),s(4,"div",58)(5,"button",59),_("click",function(){y(e);let r=h(2);return v(r.newAssociation.mode="existing")}),u(6," Existing predicate "),l(),s(7,"button",59),_("click",function(){y(e);let r=h(2);return v(r.newAssociation.mode="new")}),u(8," New predicate "),l()()(),w(9,ih,7,2,"div",30)(10,ah,15,5,"ng-container",30)(11,sh,8,16,"div",30)(12,lh,4,2,"div",30),s(13,"div",60)(14,"button",61),_("click",function(){y(e);let r=h(2);return v(r.confirmAddAssociation())}),u(15," Confirm "),l(),s(16,"button",62),_("click",function(){y(e);let r=h(2);return v(r.cancelAddAssociation())}),u(17," Cancel "),l()()()}if(n&2){let e=h(2);d(5),I("bg-blue-600",e.newAssociation.mode==="existing")("text-white",e.newAssociation.mode==="existing")("bg-white",e.newAssociation.mode!=="existing")("text-gray-600",e.newAssociation.mode!=="existing"),d(2),I("bg-blue-600",e.newAssociation.mode==="new")("text-white",e.newAssociation.mode==="new")("bg-white",e.newAssociation.mode!=="new")("text-gray-600",e.newAssociation.mode!=="new"),d(2),f("ngIf",e.newAssociation.mode==="existing"),d(),f("ngIf",e.newAssociation.mode==="new"),d(),f("ngIf",e.newAssociation.mode),d(),f("ngIf",e.newAssociation.mode),d(2),f("disabled",!e.newAssociation.mode||!e.newAssociation.value||e.newAssociation.mode==="existing"&&!e.newAssociation.predicate||e.newAssociation.mode==="new"&&(!e.newAssociation.ontologyUrl||!e.newAssociation.customPredicate))}}function dh(n,t){if(n&1){let e=T();s(0,"div",14)(1,"div",15)(2,"label",16),u(3,"ID"),l(),s(4,"div",17)(5,"span",18),u(6),l(),s(7,"button",19),_("click",function(){y(e);let r=h();return v(r.copyToClipboard(r.selectedEntity==null?null:r.selectedEntity.entityKey))}),b(),s(8,"svg",20),g(9,"path",21),l()()()(),S(),s(10,"div",15)(11,"label",16),u(12,"IRI"),l(),s(13,"div",17)(14,"span",18),u(15),l(),s(16,"button",19),_("click",function(){y(e);let r=h();return v(r.copyToClipboard(r.selectedEntity==null?null:r.selectedEntity.iri))}),b(),s(17,"svg",20),g(18,"path",21),l()()()(),w(19,Jp,2,1,"ng-container",22),S(),s(20,"div",23)(21,"div",24),w(22,eh,4,0,"button",25),l(),w(23,ch,18,21,"div",26),l(),s(24,"div",27)(25,"button",28),_("click",function(){y(e);let r=h();return v(r.editEntity())}),u(26," Save "),l(),s(27,"button",29),_("click",function(){y(e);let r=h();return v(r.deleteEntity())}),u(28," Delete "),l()()()}if(n&2){let e=h();d(6),j(e.selectedEntity==null?null:e.selectedEntity.entityKey),d(9),j(e.selectedEntity==null?null:e.selectedEntity.iri),d(4),f("ngForOf",e.entityPropertiesDict),d(3),f("ngIf",!e.newAssociation),d(),f("ngIf",e.newAssociation)}}var Gr=class n{selectedEntityId="";ontologyLabels=[];close=new se;stack=new Vr;selectedEntity=null;entityPropertiesDict=[];detailTab="rico";myNewEntites=[];newAssociation=null;gestionRessourceService=k(ui);cdr=k(Se);dialog=k(Mt);snackBar=k(Tt);copyToClipboard(t){t&&navigator.clipboard&&navigator.clipboard.writeText(t).then(()=>{console.log("Copied to clipboard:",t)}).catch(e=>{console.error("Failed to copy:",e)})}ngOnChanges(t){t.selectedEntityId&&this.selectedEntityId&&this.gestionRessourceService.getEntityDetails(this.selectedEntityId).subscribe({next:e=>{console.log("DATA:",e),this.selectedEntity=e,this.getEntityPropertiesDict(),this.cdr.markForCheck()},error:e=>console.error("ERROR:",e)})}getEntityPropertiesDict(){let t=this.selectedEntity.properties||[],e=[];if(t.length>0)for(let i of t)if(i.predicate.includes("#")){let r=i.predicate.substring(0,i.predicate.lastIndexOf("#")+1),o=this.gestionRessourceService.getTypeNameByUrl(r);console.log("ONTOLOGYy NAME : ",o);let a=i.predicate.substring(i.predicate.lastIndexOf("#")+1,i.predicate.length);e.push({name:i.name,key:a,value:i.value,kind:i.kind,predicate:i.predicate,ontology:o})}else{let r=i.predicate.substring(i.predicate.lastIndexOf("/")+1,i.predicate.length);e.push({name:i.name,key:r,value:i.value,kind:i.kind,predicate:i.predicate})}console.log("I'm here ",e),this.entityPropertiesDict=e}changeSelectedEntity(t){t&&(this.stack.push(this.selectedEntity),this.gestionRessourceService.getEntityDetails(t).subscribe({next:e=>{console.log("DATA:",e),this.selectedEntity=e,this.getEntityPropertiesDict(),this.cdr.markForCheck()},error:e=>console.error("ERROR:",e)}))}ngOnInit(){this.detailTab="rico",console.log("All ontology labels : ",this.ontologyLabels)}removeAssociation(t){this.selectedEntity&&this.selectedEntity.associatedWith&&(this.selectedEntity.associatedWith=this.selectedEntity.associatedWith.filter(e=>e!==t))}backToPreviousEntity(){if(!this.stack.isEmpty()){let t=this.stack.pop();this.selectEntity(t)}}selectEntity(t){this.selectedEntity=t,this.getEntityPropertiesDict(),this.detailTab="rico",this.cdr.markForCheck()}closeDetail(){console.log("CLOSING Details view "),this.close.emit()}deleteEntity(){if(!this.selectedEntity)return;this.dialog.open(zr,{data:{entityLabel:this.selectedEntity.titre,entityIri:this.selectedEntity.iri},panelClass:"rounded-xl"}).afterClosed().subscribe(e=>{e&&this.gestionRessourceService.deleteEntity(this.selectedEntity.iri).subscribe({next:()=>{this.snackBar.open("Entity was successfully deleted.","Close",{duration:5e3,horizontalPosition:"center",verticalPosition:"top",panelClass:["snackbar-success"]}),console.log("Entity deleted:",this.selectedEntity.iri),this.closeDetail()},error:i=>{console.error("Delete failed:",i),this.snackBar.open(`Failed to delete "${this.selectedEntity.iri}".`,"Close",{duration:5e3,horizontalPosition:"right",verticalPosition:"bottom",panelClass:["snackbar-error"]})}})})}editEntity(){let t={properties:this.entityPropertiesDict.map(({value:e,predicate:i,kind:r})=>({value:e,predicate:i,kind:r}))};this.gestionRessourceService.editEntity(this.selectedEntity.iri,t).subscribe({next:()=>{this.snackBar.open(`"${this.selectedEntity.iri}" was successfully updated.`,"Close",{duration:5e3,horizontalPosition:"center",verticalPosition:"top",panelClass:["snackbar-success"]}),console.log("Entity updated:",this.selectedEntity.iri)},error:e=>{console.error("Edit failed:",e),this.snackBar.open(`Failed to update "${this.selectedEntity.iri}".`,"Close",{duration:5e3,horizontalPosition:"center",verticalPosition:"top",panelClass:["snackbar-error"]})}}),console.log("Edited properties : ",t)}removeProperty(t){this.selectedEntity&&this.selectedEntity.properties&&this.dialog.open(Br,{data:{propertyLabel:t.key,entityIri:this.selectedEntity.iri,value:t.value},panelClass:"rounded-xl"}).afterClosed().subscribe(i=>{if(i){let r=this.entityPropertiesDict.find(o=>o.predicate===t.predicate);r&&(r.value=""),console.log("query payload after removing property : ",this.entityPropertiesDict),this.editEntity(),this.entityPropertiesDict=this.entityPropertiesDict.filter(o=>o.predicate!==t.predicate&&o.value!==t.value),this.cdr.markForCheck()}})}get ontologyEntries(){return Object.entries(bs).map(([t,e])=>({url:t,label:e}))}addAssociation(){this.newAssociation={mode:null,predicate:"",ontologyUrl:"",customPredicate:"",kind:"literal",value:""}}confirmAddAssociation(){if(!this.newAssociation||!this.newAssociation.value)return;let t,e,i;if(this.newAssociation.mode==="existing"){if(!this.newAssociation.predicate)return;t=this.newAssociation.predicate,t.includes("#")?(i=t.substring(0,t.lastIndexOf("#")+1),e=t.substring(t.lastIndexOf("#")+1)):(i=t.substring(0,t.lastIndexOf("/")+1),e=t.substring(t.lastIndexOf("/")+1))}else{if(!this.newAssociation.ontologyUrl||!this.newAssociation.customPredicate)return;i=this.newAssociation.ontologyUrl,t=i+this.newAssociation.customPredicate,e=this.newAssociation.customPredicate}let r=this.gestionRessourceService.getTypeNameByUrl(i);this.entityPropertiesDict.push({key:e,value:this.newAssociation.value,kind:this.newAssociation.kind,predicate:t,ontology:r}),this.newAssociation=null,this.cdr.markForCheck()}cancelAddAssociation(){this.newAssociation=null}isFilePath(t){if(!t)return!1;let e=/^[a-zA-Z]:\\.*$/,i=/^\\\\[^\\]+\\[^\\]+/,r=/^\/(Users|home|tmp|var|etc|opt)/,o=/^file:\/\/\/.+/;return e.test(t)||i.test(t)||r.test(t)||o.test(t)}openFileViewer(t,e){if(!e)return;console.log("Opening file viewer for property: ",t),this.dialog.open(On,{width:"1000px",data:e}).afterClosed().subscribe(r=>{r?(console.log("Received from File Viewer dialog:",r),t.value=r,this.cdr.markForCheck()):console.log("File ViewerDialog closed without selection")})}static \u0275fac=function(e){return new(e||n)};static \u0275cmp=q({type:n,selectors:[["app-entity-details"]],inputs:{selectedEntityId:"selectedEntityId",ontologyLabels:"ontologyLabels"},outputs:{close:"close"},features:[Ve],decls:12,vars:5,consts:[[1,"sticky","top-0","bg-white","border-b","border-gray-200","px-6","py-4","flex","items-center","justify-between","z-10"],[1,"cursor-pointer","text-gray-700","hover:text-black","w-6","h-6","flex","items-center","justify-center","transition-opacity","duration-200",3,"click"],["xmlns","http://www.w3.org/2000/svg","viewBox","0 0 24 24","fill","none","stroke","currentColor","stroke-width","2","stroke-linecap","round","stroke-linejoin","round",1,"w-6","h-6"],["d","M15 18l-6-6 6-6"],[1,"flex","items-center","gap-3"],[1,"text-lg","font-semibold","text-gray-900"],["aria-label","Fermer",1,"cursor-pointer","p-1.5","hover:bg-gray-100","rounded-lg","transition-colors",3,"click"],["fill","none","stroke","currentColor","viewBox","0 0 24 24",1,"w-5","h-5","text-gray-500"],["stroke-linecap","round","stroke-linejoin","round","stroke-width","2","d","M6 18L18 6M6 6l12 12"],["class","flex mb-6 bg-gray-100 p-1 rounded-lg",4,"ngFor","ngForOf"],["class","flex flex-col gap-4! p-3!",4,"ngIf"],[1,"flex","mb-6","bg-gray-100","p-1","rounded-lg"],["class","cursor-pointer flex-1 px-3 py-2 text-sm font-medium text-gray-600 hover:bg-gray-50 rounded-md transition-colors",3,"bg-white","text-gray-900","shadow-sm","click",4,"ngFor","ngForOf"],[1,"cursor-pointer","flex-1","px-3","py-2","text-sm","font-medium","text-gray-600","hover:bg-gray-50","rounded-md","transition-colors",3,"click"],[1,"flex","flex-col","gap-4!","p-3!"],[1,"mb-6"],[1,"block","text-sm","font-medium","text-gray-700","mb-2"],[1,"flex","items-center","justify-between","p-3","bg-gray-50","border","border-gray-200","rounded-lg"],[1,"text-sm","text-gray-600","font-mono"],["aria-label","Copier l'ID",1,"text-gray-400","hover:text-gray-600","transition-colors",3,"click"],["fill","none","stroke","currentColor","viewBox","0 0 24 24",1,"w-4","h-4"],["stroke-linecap","round","stroke-linejoin","round","stroke-width","2","d","M8 16H6a2 2 0 01-2-2V6a2 2 0 012-2h8a2 2 0 012 2v2m-6 12h8a2 2 0 002-2v-8a2 2 0 00-2-2h-8a2 2 0 00-2 2v8a2 2 0 002 2z"],["class","mb-6",4,"ngFor","ngForOf"],[1,"mb-6","flex","flex-col","gap-2!"],[1,"flex","items-center","justify-center"],["class","cursor-pointer! mt-2 flex items-center gap-1 text-sm text-blue-600 hover:text-blue-700 font-medium transition-colors",3,"click",4,"ngIf"],["class","mt-3 p-3 border border-blue-200 bg-blue-50 rounded-lg flex flex-col gap-3!",4,"ngIf"],[1,"mt-8","flex","gap-3"],[1,"cursor-pointer!","flex-1","px-4","py-2.5","bg-blue-600","text-white","rounded-lg","hover:bg-blue-700","transition-colors","text-sm","font-medium","shadow-sm",3,"click"],[1,"cursor-pointer!","px-4","py-2.5","border","border-red-300","text-red-700","rounded-lg","hover:bg-red-50","transition-colors","text-sm","font-medium",3,"click"],[4,"ngIf"],[1,"flex","block","text-sm","font-medium","text-gray-700","mb-2"],["class","inline ml-1 text-gray-400 hover:text-gray-600","aria-label","View file",3,"click",4,"ngIf"],["class","text-sm text-gray-900 font-medium",4,"ngIf"],["type","text","class","text-sm text-gray-900 font-medium w-full bg-transparent focus:outline-none",3,"ngModel","readonly","cursor-default","ngModelChange",4,"ngIf"],["rel","noopener noreferrer","class","cursor-pointer! text-sm text-blue-600 hover:text-blue-800 underline font-mono truncate w-full",3,"click",4,"ngIf"],["type","text","class","text-sm text-blue-600 font-mono w-full bg-transparent focus:outline-none border-b border-blue-400","autofocus","",3,"ngModel","ngModelChange","keydown.enter","keydown.escape",4,"ngIf"],["class","ml-2 text-gray-400 hover:text-blue-600 transition-colors",3,"click",4,"ngIf"],["class","cursor-pointer! ml-2 text-red-400 hover:text-red-600 transition-colors flex-shrink-0","aria-label","Supprimer",3,"click",4,"ngIf"],["aria-label","View file",1,"inline","ml-1","text-gray-400","hover:text-gray-600",3,"click"],["stroke-linecap","round","stroke-linejoin","round","stroke-width","2","d","M15 12a3 3 0 11-6 0 3 3 0 016 0z"],["stroke-linecap","round","stroke-linejoin","round","stroke-width","2","d","M2.458 12C3.732 7.943 7.523 5 12 5c4.477 0 8.268 2.943 9.542 7-1.274 4.057-5.065 7-9.542 7-4.477 0-8.268-2.943-9.542-7z"],[1,"text-sm","text-gray-900","font-medium"],["type","text",1,"text-sm","text-gray-900","font-medium","w-full","bg-transparent","focus:outline-none",3,"ngModelChange","ngModel","readonly"],["rel","noopener noreferrer",1,"cursor-pointer!","text-sm","text-blue-600","hover:text-blue-800","underline","font-mono","truncate","w-full",3,"click"],["type","text","autofocus","",1,"text-sm","text-blue-600","font-mono","w-full","bg-transparent","focus:outline-none","border-b","border-blue-400",3,"ngModelChange","keydown.enter","keydown.escape","ngModel"],[1,"ml-2","text-gray-400","hover:text-blue-600","transition-colors",3,"click"],["class","cursor-pointer! w-4 h-4","fill","none","stroke","currentColor","viewBox","0 0 24 24",4,"ngIf"],["class","cursor-pointer! w-4 h-4 text-green-600","fill","none","stroke","currentColor","viewBox","0 0 24 24",4,"ngIf"],["fill","none","stroke","currentColor","viewBox","0 0 24 24",1,"cursor-pointer!","w-4","h-4"],["stroke-linecap","round","stroke-linejoin","round","stroke-width","2","d","M11 5H6a2 2 0 00-2 2v11a2 2 0 002 2h11a2 2 0 002-2v-5m-1.414-9.414a2 2 0 112.828 2.828L11.828 15H9v-2.828l8.586-8.586z"],["fill","none","stroke","currentColor","viewBox","0 0 24 24",1,"cursor-pointer!","w-4","h-4","text-green-600"],["stroke-linecap","round","stroke-linejoin","round","stroke-width","2","d","M5 13l4 4L19 7"],["aria-label","Supprimer",1,"cursor-pointer!","ml-2","text-red-400","hover:text-red-600","transition-colors","flex-shrink-0",3,"click"],[1,"cursor-pointer!","mt-2","flex","items-center","gap-1","text-sm","text-blue-600","hover:text-blue-700","font-medium","transition-colors",3,"click"],["stroke-linecap","round","stroke-linejoin","round","stroke-width","2","d","M12 4v16m8-8H4"],[1,"mt-3","p-3","border","border-blue-200","bg-blue-50","rounded-lg","flex","flex-col","gap-3!"],[1,"block","text-xs","font-medium","text-gray-600","mb-1"],[1,"flex","gap-2"],[1,"cursor-pointer!","flex-1","text-sm","py-1.5","rounded-md","border","border-gray-300","transition-colors","font-medium",3,"click"],[1,"flex","gap-2","pt-1"],[1,"cursor-pointer!","flex-1","text-sm","py-1.5","bg-blue-600","text-white","rounded-md","hover:bg-blue-700","disabled:opacity-40","disabled:cursor-not-allowed","transition-colors","font-medium",3,"click","disabled"],[1,"cursor-pointer!","flex-1","text-sm","py-1.5","border","border-gray-300","text-gray-600","rounded-md","hover:bg-gray-100","transition-colors","font-medium",3,"click"],[1,"w-full","text-sm","border","border-gray-300","rounded-md","px-2","py-1.5","bg-white","focus:outline-none","focus:ring-2","focus:ring-blue-400",3,"ngModelChange","ngModel"],["value","","disabled",""],[3,"value",4,"ngFor","ngForOf"],[3,"value"],[1,"text-gray-400","font-mono","text-xs"],[1,"flex","items-center","gap-1","border","border-gray-300","rounded-md","bg-white","px-2","py-1.5","focus-within:ring-2","focus-within:ring-blue-400"],["class","text-xs text-gray-400 font-mono truncate max-w-[120px] shrink-0",4,"ngIf"],["type","text","placeholder","myPredicate",1,"text-sm","text-gray-900","w-full","bg-transparent","focus:outline-none",3,"ngModelChange","ngModel"],["class","mt-1 text-xs text-gray-400 font-mono truncate",4,"ngIf"],[1,"font-mono","text-xs","text-gray-400"],[1,"text-xs","text-gray-400","font-mono","truncate","max-w-[120px]","shrink-0"],[1,"mt-1","text-xs","text-gray-400","font-mono","truncate"],[1,"cursor-pointer!","flex-1","text-sm","py-1","rounded-md","border","border-gray-300","transition-colors","font-medium",3,"click"],["type","text",1,"w-full","text-sm","border","border-gray-300","rounded-md","px-2","py-1.5","bg-white","focus:outline-none","focus:ring-2","focus:ring-blue-400",3,"ngModelChange","ngModel","placeholder"]],template:function(e,i){e&1&&(s(0,"div",0)(1,"button",1),_("click",function(){return i.backToPreviousEntity()}),b(),s(2,"svg",2),g(3,"path",3),l()(),S(),s(4,"div",4)(5,"h2",5),u(6),l()(),s(7,"button",6),_("click",function(){return i.closeDetail()}),b(),s(8,"svg",7),g(9,"path",8),l()()(),w(10,Gp,3,3,"div",9)(11,dh,29,5,"div",10)),e&2&&(d(),I("invisible",i.stack.isEmpty()),d(5),j(i.selectedEntity==null?null:i.selectedEntity.titre),d(4),f("ngForOf",i.ontologyLabels),d(),f("ngIf",i.detailTab))},dependencies:[be,nt,He,es,rt,li,ci,Ct,si,St,kt,Et,Ue,mi],styles:["[_nghost-%COMP%] .snackbar-success .mdc-snackbar__surface{background-color:#16a34a!important;color:#fff!important}[_nghost-%COMP%] .snackbar-error .mdc-snackbar__surface{background-color:#dc2626!important;color:#fff!important}button[_ngcontent-%COMP%]{cursor:pointer}"]})};function mh(n,t){n&1&&(s(0,"span"),u(1,"s"),l())}function uh(n,t){if(n&1){let e=T();s(0,"div",46),b(),s(1,"svg",13),g(2,"path",29),l(),S(),s(3,"span"),u(4),l(),s(5,"button",47),_("click",function(){y(e);let r=h();return v(r.clearTypeFilter())}),b(),s(6,"svg",48),g(7,"path",49),l()()()}if(n&2){let e=h();d(4),D("Type: ",e.selectedType,"")}}function ph(n,t){if(n&1){let e=T();s(0,"div",50),b(),s(1,"svg",13),g(2,"path",20),l(),S(),s(3,"span"),u(4),l(),s(5,"button",51),_("click",function(){y(e);let r=h();return v(r.clearSearch())}),b(),s(6,"svg",48),g(7,"path",49),l()()()}if(n&2){let e=h();d(4),D('Recherche: "',e.searchQuery,'"')}}function hh(n,t){if(n&1){let e=T();s(0,"button",52),_("click",function(){y(e);let r=h();return v(r.clearAllFilters())}),b(),s(1,"svg",13),g(2,"path",49),l(),u(3," Clear all filters "),l()}}function fh(n,t){if(n&1){let e=T();s(0,"button",53),_("click",function(){y(e);let r=h();return v(r.clearSearch())}),b(),s(1,"svg",13),g(2,"path",49),l()()}}function gh(n,t){if(n&1&&(b(),s(0,"svg",54),g(1,"path",55),l()),n&2){let e=h();I("rotate-180",!e.sortAscending)}}function _h(n,t){if(n&1&&(b(),s(0,"svg",54),g(1,"path",55),l()),n&2){let e=h();I("rotate-180",!e.sortAscending)}}function yh(n,t){if(n&1){let e=T();s(0,"tr",56),_("click",function(){let r=y(e).$implicit,o=h();return v(o.selectEntity(r))}),s(1,"td",57)(2,"div",58)(3,"div",59),b(),s(4,"svg",60),g(5,"path",5),l()(),S(),s(6,"div",61)(7,"span",62),u(8),l()()()(),s(9,"td",57)(10,"span",63),u(11),l()(),s(12,"td",57)(13,"span",64),g(14,"span",65),u(15),l()()()}if(n&2){let e=t.$implicit;d(7),f("title",e.label),d(),D(" ",e.label," "),d(2),f("title",e.date),d(),D(" ",e.date," "),d(2),f("ngClass",e.editable?"bg-green-100 text-green-700":"bg-red-100 text-red-700"),d(),f("ngClass",e.editable?"bg-green-500":"bg-red-500"),d(),D(" ",e.editable?"\xC9ditable":"Verrouill\xE9"," ")}}function vh(n,t){if(n&1){let e=T();s(0,"div",66),_("click",function(){let r=y(e).$implicit,o=h();return v(o.selectEntity(r))}),s(1,"div",67)(2,"div",68)(3,"div",69),b(),s(4,"svg",4),g(5,"path",5),l()(),S(),s(6,"div",70)(7,"h3",71),u(8),l(),s(9,"p",72),u(10),l()()(),s(11,"span",73),g(12,"span",74),u(13),l()(),s(14,"div",75)(15,"span",76),u(16),l(),b(),s(17,"svg",77),g(18,"path",78),l()()()}if(n&2){let e=t.$implicit;d(7),f("title",e.label),d(),D(" ",e.label," "),d(),f("title",e.date),d(),D(" ",e.date," "),d(),f("ngClass",e.editable?"bg-green-100 text-green-700":"bg-red-100 text-red-700"),d(),f("ngClass",e.editable?"bg-green-500":"bg-red-500"),d(),D(" ",e.editable?"\xC9ditable":"Verrouill\xE9"," "),d(2),f("title",e.source),d(),D(" ",e.source," ")}}function bh(n,t){if(n&1){let e=T();s(0,"button",85),_("click",function(){y(e);let r=h(2);return v(r.clearAllFilters())}),b(),s(1,"svg",13),g(2,"path",49),l(),u(3," Clear all filters "),l()}}function xh(n,t){if(n&1&&(s(0,"div",79)(1,"div",80),b(),s(2,"svg",81),g(3,"path",5),l()(),S(),s(4,"h3",82),u(5,"No results found"),l(),s(6,"p",83),u(7,"Try adjusting your search criteria or clearing the filters."),l(),w(8,bh,4,0,"button",84),l()),n&2){let e=h();d(8),f("ngIf",e.selectedType||e.searchQuery)}}var Hr=class n{constructor(t){this.dialog=t}allEntities=[];selectedType="";selectedEntity=new se;searchQuery="";typeSearchQuery="";sortColumn=null;sortAscending=!0;openCreateEntityDialog_withType(){if(!this.selectedType)return;let[t,e]=this.selectedType.split(":");this.dialog.open(po,{width:"600px",data:{ontology:t,type:e}})}openCreateEntityDialog_withoutType(){this.dialog.open(po,{width:"600px",data:null})}clearTypeFilter(){this.selectedType=null,this.applyAllFilters()}clearAllFilters(){}trackByEntityId(t,e){return e.id}selectEntity(t){this.selectedEntity.emit(t)}filterByType(t){this.selectedType===t?(this.selectedType=null,this.applyAllFilters()):(this.selectedType=t,this.applyAllFilters())}onTypeSearch(){}onSearch(){this.applyAllFilters()}clearSearch(){this.searchQuery="",this.applyAllFilters()}applyAllFilters(){}sortEntities(t,e){return t.sort((i,r)=>{let o=i[e].toLowerCase(),a=r[e].toLowerCase();return e==="date"&&(o=new Date(i.date).getTime().toString(),a=new Date(r.date).getTime().toString()),this.sortAscending?o>a?1:-1:o1),d(),f("ngIf",i.selectedType&&i.selectedType!=="null:null"),d(),f("ngIf",i.searchQuery),d(),f("ngIf",i.selectedType||i.searchQuery),d(13),f("ngIf",i.searchQuery),d(2),he("aria-label",i.sortAscending?"Trier par ordre d\xE9croissant":"Trier par ordre croissant"),d(),I("rotate-180",!i.sortAscending),d(8),f("disabled",!i.selectedType||i.selectedType==="null:null"),d(4),j(i.selectedType!=="null:null"?"New "+i.selectedType:"New"),d(12),f("ngIf",i.sortColumn==="titre"),d(5),f("ngIf",i.sortColumn==="date"),d(4),f("ngForOf",i.allEntities)("ngForTrackBy",i.trackByEntityId),d(2),f("ngForOf",i.allEntities)("ngForTrackBy",i.trackByEntityId),d(),f("ngIf",i.allEntities.length===0))},dependencies:[be,bn,nt,He,Ue],styles:['@keyframes _ngcontent-%COMP%_fadeIn{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}.animate-fade-in[_ngcontent-%COMP%]{animation:_ngcontent-%COMP%_fadeIn .3s ease-out}.table-fixed[_ngcontent-%COMP%]{table-layout:fixed}.truncate[_ngcontent-%COMP%]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.truncate-gradient[_ngcontent-%COMP%]{position:relative;overflow:hidden}.truncate-gradient[_ngcontent-%COMP%]:after{content:"";position:absolute;top:0;right:0;width:20px;height:100%;background:linear-gradient(to right,transparent,white);pointer-events:none}']})};function Ch(n,t){if(n&1){let e=T();s(0,"button",20),_("click",function(){let r=y(e).$implicit,o=h();return v(o.selectedType=r)}),u(1),l()}if(n&2){let e=t.$implicit,i=h();Ai(i.selectedType===e?"px-4 py-1.5 text-sm font-medium bg-gray-900 text-white dark:bg-white dark:text-gray-900":"px-4 py-1.5 text-sm text-gray-600 dark:text-gray-400 hover:bg-gray-50 dark:hover:bg-gray-800 transition-colors"),d(),D(" ",e," ")}}function Sh(n,t){if(n&1){let e=T();s(0,"button",21),_("click",function(){let r=y(e).$implicit,o=h();return v(o.loadExample(r))}),u(1),l()}if(n&2){let e=t.$implicit;d(),D(" ",e.label," ")}}function kh(n,t){n&1&&(b(),s(0,"svg",22),g(1,"path",23)(2,"path",24),l())}function Eh(n,t){n&1&&(b(),s(0,"svg",25),g(1,"circle",26)(2,"path",27),l())}function Th(n,t){if(n&1&&(s(0,"div",28),u(1),l()),n&2){let e=h();d(),D(" ",e.error," ")}}function Mh(n,t){n&1&&(s(0,"div",29),u(1," Update executed successfully. "),l())}function Dh(n,t){if(n&1&&(s(0,"th",40),u(1),l()),n&2){let e=t.$implicit;d(),D(" ",e," ")}}function Rh(n,t){if(n&1&&(s(0,"td",42),u(1),l()),n&2){let e,i=t.$implicit,r=h().$implicit;f("title",r[i]),d(),D(" ",(e=r[i])!==null&&e!==void 0?e:"\u2014"," ")}}function Ph(n,t){if(n&1&&(s(0,"tr"),w(1,Rh,2,2,"td",41),l()),n&2){let e=t.index,i=h(3);Ai(e%2===0?"border-b border-gray-100 dark:border-gray-800":"border-b border-gray-100 dark:border-gray-800 bg-gray-50/50 dark:bg-gray-800/30"),d(),f("ngForOf",i.columns)}}function Ih(n,t){if(n&1&&(s(0,"div",35)(1,"table",36)(2,"thead")(3,"tr",37),w(4,Dh,2,1,"th",38),l()(),s(5,"tbody"),w(6,Ph,2,3,"tr",39),l()()()),n&2){let e=h(2);d(4),f("ngForOf",e.columns),d(2),f("ngForOf",e.results)}}function Ah(n,t){if(n&1&&(s(0,"div",43)(1,"pre",44),u(2),Re(3,"json"),l()()),n&2){let e=h(2);d(2),j(yn(3,1,e.results))}}function Oh(n,t){if(n&1){let e=T();s(0,"div",30)(1,"div",31)(2,"span",32),u(3),l(),s(4,"div",9)(5,"button",20),_("click",function(){y(e);let r=h();return v(r.viewMode="table")}),u(6," Table "),l(),s(7,"button",20),_("click",function(){y(e);let r=h();return v(r.viewMode="json")}),u(8," JSON "),l()()(),w(9,Ih,7,2,"div",33)(10,Ah,4,3,"div",34),l()}if(n&2){let e=h();d(3),_n(" ",e.results.length," result",e.results.length!==1?"s":""," "),d(2),Ai(e.viewMode==="table"?e.activeTabClass:e.inactiveTabClass),d(2),Ai(e.viewMode==="json"?e.activeTabClass:e.inactiveTabClass),d(2),f("ngIf",e.viewMode==="table"),d(),f("ngIf",e.viewMode==="json")}}function Lh(n,t){n&1&&(s(0,"div",45),u(1," No results returned. "),l())}var Ur=class n{constructor(t,e,i){this.gestionService=t;this.ngZone=e;this.cdr=i}query="";results=[];columns=[];error=null;loading=!1;hasRun=!1;updateSuccess=!1;selectedType="SELECT";viewMode="table";queryTypes=["SELECT","UPDATE"];activeTabClass="px-3 py-1 text-xs rounded-lg bg-white dark:bg-gray-700 border border-gray-200 dark:border-gray-600 text-gray-800 dark:text-gray-100 font-medium shadow-sm";inactiveTabClass="px-3 py-1 text-xs rounded-lg text-gray-500 dark:text-gray-400 hover:bg-white dark:hover:bg-gray-700 transition-colors";examples=[{label:"All classes",type:"SELECT",query:`PREFIX owl:
+PREFIX rdfs:
+SELECT ?class ?label WHERE {
+ ?class a owl:Class .
+ OPTIONAL { ?class rdfs:label ?label . }
+} LIMIT 20`},{label:"All triples",type:"SELECT",query:`SELECT ?s ?p ?o WHERE {
+ ?s ?p ?o .
+} LIMIT 50`},{label:"Named graphs",type:"SELECT",query:`SELECT DISTINCT ?g WHERE {
+ GRAPH ?g { ?s ?p ?o }
+}`}];loadExample(t){this.query=t.query,this.selectedType=t.type,this.clearResults()}clearAll(){this.query="",this.clearResults()}clearResults(){this.results=[],this.columns=[],this.error=null,this.updateSuccess=!1,this.hasRun=!1}runQuery(){if(!this.query.trim())return;let t=this.query.replace(/\\"/g,'"').replace(/\\\\/g,"\\").replace(/\s+/g," ").trim();this.loading=!0,this.error=null,this.updateSuccess=!1,this.results=[],this.columns=[],this.hasRun=!0,this.cdr.detectChanges(),this.selectedType==="SELECT"&&this.gestionService.runSelectQuery(t).pipe(Ke(()=>{this.ngZone.run(()=>{this.loading=!1,this.cdr.detectChanges()})})).subscribe({next:e=>{this.ngZone.run(()=>{this.results=e??[],this.results.length>0&&(this.columns=Object.keys(this.results[0])),this.cdr.detectChanges()})},error:e=>{this.ngZone.run(()=>{this.error=e?.error?.message??e?.message??"An error occurred while executing the query.",this.cdr.detectChanges()})}})}static \u0275fac=function(e){return new(e||n)(K(ui),K(ut),K(Se))};static \u0275cmp=q({type:n,selectors:[["app-sparql"]],decls:24,vars:11,consts:[[1,"p-6","max-w-full"],[1,"mb-4"],[1,"flex","items-center","gap-3","mb-3"],[1,"text-sm","font-medium","text-gray-500","dark:text-gray-400"],[1,"flex","rounded-lg","border","border-gray-200","dark:border-gray-700","overflow-hidden"],[3,"class","click",4,"ngFor","ngForOf"],[1,"relative"],["rows","10","placeholder","Write your SPARQL query here...",1,"w-full","font-mono","text-sm","p-4","rounded-xl","border","border-gray-200","dark:border-gray-700","bg-gray-50","dark:bg-gray-900","text-gray-900","dark:text-gray-100","focus:outline-none","focus:ring-2","focus:ring-indigo-500","focus:border-transparent","resize-y","placeholder-gray-400","dark:placeholder-gray-600","leading-relaxed",3,"ngModelChange","ngModel"],[1,"flex","items-center","justify-between","mt-3"],[1,"flex","gap-2"],["class",`text-xs px-3 py-1.5 rounded-lg border border-gray-200 dark:border-gray-700
+ text-gray-500 dark:text-gray-400 hover:bg-gray-50 dark:hover:bg-gray-800
+ hover:text-gray-700 dark:hover:text-gray-200 transition-colors`,3,"click",4,"ngFor","ngForOf"],[1,"flex","items-center","gap-3"],[1,"text-sm","text-gray-400","hover:text-gray-600","dark:hover:text-gray-200","transition-colors",3,"click"],[1,"flex","items-center","gap-2","px-5","py-2","rounded-xl","bg-indigo-600","hover:bg-indigo-700","disabled:opacity-40","disabled:cursor-not-allowed","text-white","text-sm","font-medium","transition-colors",3,"click","disabled"],["class","w-4 h-4","fill","none","viewBox","0 0 24 24","stroke","currentColor",4,"ngIf"],["class","w-4 h-4 animate-spin","fill","none","viewBox","0 0 24 24",4,"ngIf"],["class",`mb-4 p-4 rounded-xl bg-red-50 dark:bg-red-900/20 border border-red-200 dark:border-red-800
+ text-red-700 dark:text-red-400 text-sm font-mono`,4,"ngIf"],["class",`mb-4 p-4 rounded-xl bg-green-50 dark:bg-green-900/20 border border-green-200 dark:border-green-800
+ text-green-700 dark:text-green-400 text-sm`,4,"ngIf"],["class","rounded-xl border border-gray-200 dark:border-gray-700 overflow-hidden",4,"ngIf"],["class","text-center py-12 text-gray-400 dark:text-gray-600 text-sm",4,"ngIf"],[3,"click"],[1,"text-xs","px-3","py-1.5","rounded-lg","border","border-gray-200","dark:border-gray-700","text-gray-500","dark:text-gray-400","hover:bg-gray-50","dark:hover:bg-gray-800","hover:text-gray-700","dark:hover:text-gray-200","transition-colors",3,"click"],["fill","none","viewBox","0 0 24 24","stroke","currentColor",1,"w-4","h-4"],["stroke-linecap","round","stroke-linejoin","round","stroke-width","2","d","M14.752 11.168l-3.197-2.132A1 1 0 0010 9.87v4.263a1 1 0 001.555.832l3.197-2.132a1 1 0 000-1.664z"],["stroke-linecap","round","stroke-linejoin","round","stroke-width","2","d","M21 12a9 9 0 11-18 0 9 9 0 0118 0z"],["fill","none","viewBox","0 0 24 24",1,"w-4","h-4","animate-spin"],["cx","12","cy","12","r","10","stroke","currentColor","stroke-width","4",1,"opacity-25"],["fill","currentColor","d","M4 12a8 8 0 018-8v8H4z",1,"opacity-75"],[1,"mb-4","p-4","rounded-xl","bg-red-50","dark:bg-red-900/20","border","border-red-200","dark:border-red-800","text-red-700","dark:text-red-400","text-sm","font-mono"],[1,"mb-4","p-4","rounded-xl","bg-green-50","dark:bg-green-900/20","border","border-green-200","dark:border-green-800","text-green-700","dark:text-green-400","text-sm"],[1,"rounded-xl","border","border-gray-200","dark:border-gray-700","overflow-hidden"],[1,"flex","items-center","justify-between","px-4","py-3","bg-gray-50","dark:bg-gray-800","border-b","border-gray-200","dark:border-gray-700"],[1,"text-sm","text-gray-500","dark:text-gray-400"],["class","overflow-x-auto",4,"ngIf"],["class","overflow-auto max-h-96",4,"ngIf"],[1,"overflow-x-auto"],[1,"w-full","text-sm"],[1,"bg-gray-50","dark:bg-gray-800","border-b","border-gray-200","dark:border-gray-700"],["class","px-4 py-3 text-left text-xs font-medium text-gray-500 dark:text-gray-400 uppercase tracking-wider whitespace-nowrap",4,"ngFor","ngForOf"],[3,"class",4,"ngFor","ngForOf"],[1,"px-4","py-3","text-left","text-xs","font-medium","text-gray-500","dark:text-gray-400","uppercase","tracking-wider","whitespace-nowrap"],["class","px-4 py-3 text-gray-800 dark:text-gray-200 font-mono text-xs max-w-xs truncate",3,"title",4,"ngFor","ngForOf"],[1,"px-4","py-3","text-gray-800","dark:text-gray-200","font-mono","text-xs","max-w-xs","truncate",3,"title"],[1,"overflow-auto","max-h-96"],[1,"p-4","text-xs","font-mono","text-gray-800","dark:text-gray-200","whitespace-pre-wrap","break-all"],[1,"text-center","py-12","text-gray-400","dark:text-gray-600","text-sm"]],template:function(e,i){e&1&&(s(0,"div",0)(1,"div",1)(2,"div",2)(3,"span",3),u(4,"Query type"),l(),s(5,"div",4),w(6,Ch,2,3,"button",5),l()(),s(7,"div",6)(8,"textarea",7),de("ngModelChange",function(o){return ce(i.query,o)||(i.query=o),o}),u(9," "),l()(),s(10,"div",8)(11,"div",9),w(12,Sh,2,1,"button",10),l(),s(13,"div",11)(14,"button",12),_("click",function(){return i.clearAll()}),u(15," Clear "),l(),s(16,"button",13),_("click",function(){return i.runQuery()}),w(17,kh,3,0,"svg",14)(18,Eh,3,0,"svg",15),u(19),l()()()(),w(20,Th,2,1,"div",16)(21,Mh,2,0,"div",17)(22,Oh,11,8,"div",18)(23,Lh,2,0,"div",19),l()),e&2&&(d(6),f("ngForOf",i.queryTypes),d(2),le("ngModel",i.query),d(4),f("ngForOf",i.examples),d(4),f("disabled",i.loading||!i.query.trim()),d(),f("ngIf",!i.loading),d(),f("ngIf",i.loading),d(),D(" ",i.loading?"Running...":"Run query"," "),d(),f("ngIf",i.error),d(),f("ngIf",i.updateSuccess),d(),f("ngIf",i.results.length>0),d(),f("ngIf",!i.loading&&!i.error&&!i.updateSuccess&&i.results.length===0&&i.hasRun))},dependencies:[be,nt,He,Ja,rt,Ct,St,kt],encapsulation:2})};var $r=class n{constructor(t){this.http=t}apiUrl="http://localhost:8080/projects";getProject(){return this.http.get(`${this.apiUrl}/current`)}static \u0275fac=function(e){return new(e||n)(Ce(ai))};static \u0275prov=J({token:n,factory:n.\u0275fac,providedIn:"root"})};var Nh=n=>({"rotate-180":n});function jh(n,t){if(n&1&&(s(0,"h1",27),u(1),l()),n&2){let e=h();d(),D(" ",e.projectName," ")}}function Vh(n,t){n&1&&(s(0,"div",28),b(),s(1,"svg",29),g(2,"circle",30)(3,"path",31),l(),S(),s(4,"span",32),u(5,"Loading..."),l()())}function zh(n,t){if(n&1&&(s(0,"mat-panel-description",50)(1,"span",51),u(2),l()()),n&2){let e=h().$implicit,i=h(2);d(2),j(i.getValuesOfKey(e).length)}}function Bh(n,t){if(n&1&&(s(0,"span",61),u(1),l()),n&2){let e=h().$implicit;d(),D("(",e.values.length,")")}}function Gh(n,t){if(n&1&&(s(0,"span",61),u(1),l()),n&2){let e=h(3).$implicit,i=h(2);d(),D("(",i.getValuesOfKey(e).length,")")}}function Hh(n,t){n&1&&(s(0,"span",67),u(1,"\u25CF"),l())}function Uh(n,t){if(n&1){let e=T();s(0,"button",63),_("click",function(){let r=y(e).$implicit,o=h(4).$implicit,a=h(2);return v(a.getAllEntitiesByPath(a.getKey(o),r))}),s(1,"div",64)(2,"span",65),u(3),l(),w(4,Hh,2,0,"span",66),l()()}if(n&2){let e=t.$implicit,i=h(6);I("bg-blue-50",i.selectedType===e)("border-l-3",i.selectedType===e)("border-l-blue-500",i.selectedType===e)("text-blue-700",i.selectedType===e),he("aria-pressed",i.selectedType===e),d(3),D(" ",e," "),d(),f("ngIf",i.selectedType===e)}}function $h(n,t){if(n&1&&w(0,Uh,5,11,"button",62),n&2){let e=h(3).$implicit,i=h(2);f("ngForOf",i.getValuesOfKey(e))}}function qh(n,t){n&1&&(s(0,"span",67),u(1,"\u25CF"),l())}function Wh(n,t){if(n&1){let e=T();s(0,"button",63),_("click",function(){let r=y(e).$implicit,o=h(4).$implicit,a=h(2);return v(a.getAllEntitiesByPath(a.getKey(o),r))}),s(1,"div",64)(2,"span",65),u(3),l(),w(4,qh,2,0,"span",66),l()()}if(n&2){let e=t.$implicit,i=h(6);I("bg-blue-50",i.selectedType===e)("border-l-3",i.selectedType===e)("border-l-blue-500",i.selectedType===e)("text-blue-700",i.selectedType===e),he("aria-pressed",i.selectedType===e),d(3),D(" ",e," "),d(),f("ngIf",i.selectedType===e)}}function Qh(n,t){if(n&1&&w(0,Wh,5,11,"button",62),n&2){let e=h().$implicit;f("ngForOf",e.values)}}function Kh(n,t){if(n&1){let e=T();s(0,"cdk-accordion-item",53,1)(2,"button",54),_("click",function(){y(e);let r=wt(1);return v(r.toggle())}),s(3,"div",55)(4,"span"),u(5),l(),w(6,Bh,2,1,"span",56)(7,Gh,2,1,"span",56),l(),s(8,"span",57),b(),s(9,"svg",58),g(10,"path",59),l()()(),w(11,$h,1,1,"button",60)(12,Qh,1,1,"button",60),l()}if(n&2){let e=t.$implicit,i=t.$index,r=wt(1);d(2),he("id","accordion-header-"+i)("aria-expanded",r.expanded)("aria-controls","accordion-body-"+i),d(3),j(e.title),d(),f("ngIf",i!==1),d(),f("ngIf",i===1),d(2),f("ngClass",Ya(9,Nh,r.expanded)),d(2),W(r.expanded&&i===1?11:-1),d(),W(i!==1&&r.expanded?12:-1)}}function Yh(n,t){if(n&1&&(s(0,"cdk-accordion",52),Oi(1,Kh,13,11,"cdk-accordion-item",53,gn),l()),n&2){let e=h(3);d(),Li(e.accordion_items)}}function Xh(n,t){if(n&1){let e=T();s(0,"mat-expansion-panel",45),_("opened",function(){y(e);let r=h(2);return v(r.panelOpenState.set(!0))})("closed",function(){y(e);let r=h(2);return v(r.panelOpenState.set(!1))}),s(1,"mat-expansion-panel-header",46)(2,"mat-panel-title",47),u(3),l(),w(4,zh,3,1,"mat-panel-description",48),l(),w(5,Yh,3,0,"cdk-accordion",49),l()}if(n&2){let e=t.$implicit,i=h(2);I("!bg-gray-50",i.panelOpenState()),d(3),D(" ",i.getKey(e)," "),d(),f("ngIf",i.getKey(e)!=="rico"),d(),f("ngIf",i.getKey(e)==="rico")}}function Zh(n,t){n&1&&(s(0,"div",68)(1,"div",69),b(),s(2,"svg",70),g(3,"path",71),l()(),S(),s(4,"p",72),u(5,"No types found"),l(),s(6,"p",73),u(7,"Try adjusting your search"),l()())}function Jh(n,t){if(n&1){let e=T();s(0,"aside",33)(1,"div",34)(2,"div",35)(3,"div",36)(4,"button",37),_("click",function(){y(e);let r=h();return v(r.openOntologyManagerDialog())}),b(),s(5,"svg",38),g(6,"path",39)(7,"path",40),l()(),S(),s(8,"h2",41),u(9," RDF Dictionaries "),l()()(),s(10,"mat-accordion",42),w(11,Xh,6,5,"mat-expansion-panel",43),l(),w(12,Zh,8,0,"div",44),l()()}if(n&2){let e=h();d(11),f("ngForOf",e.ontologyLabels),d(),f("ngIf",e.ontologyLabels.length===0)}}function ef(n,t){if(n&1){let e=T();s(0,"app-liste-entites",77),_("selectedEntity",function(r){y(e);let o=h(2);return v(o.handleChildData(r))}),l()}if(n&2){let e=h(2);f("selectedType",`${e.selectedOntology}:${e.selectedType}`)("allEntities",e.formattedEntities)}}function tf(n,t){if(n&1&&(s(0,"div",74)(1,"div",75),w(2,ef,1,2,"app-liste-entites",76),l()()),n&2){let e=h();f("@slideIn",void 0),d(2),f("ngIf",e.formattedEntities)}}function nf(n,t){n&1&&(s(0,"div",78)(1,"div",79),g(2,"app-sparql"),l()()),n&2&&f("@slideIn",void 0)}function rf(n,t){if(n&1){let e=T();s(0,"aside",80)(1,"div",81)(2,"app-entity-details",82),_("close",function(){y(e);let r=h();return v(r.selectedEntity=null)}),l()()()}if(n&2){let e=h();f("@slideIn",void 0),d(2),f("ontologyLabels",e.ontologyLabels)("selectedEntityId",e.selectedEntity.iri)}}var qr=class n{constructor(t,e,i,r,o){this.dialog=t;this.ontologyService=e;this.projetService=i;this.cdr=r;this.router=o}panelOpenState=Ba(!1);formattedEntities=[];ontologyLabels=[];allRicoClasses=[];projectName="";filteredEntityTypes=[];selectedEntity=null;previousSelectedEntity=null;selectedType=null;selectedOntology=null;activeView="tableau";detailTab="ric";showPersonForm=!1;accordion_items=[{title:"Main Entity Types",values:["Activity","Person","Record","Instantiation","Place"]},{title:"Used Types",values:[]},{title:"Main Terminologies",values:["ActivityType","DocumentaryFormType","ContentFormType","Language","PlaceType","RoleType"]}];expandedIndex=0;openOntologyManagerDialog(){}ngOnInit(){this.ontologyService.getAllRicoClasses().subscribe({next:t=>{try{let i=this.ontologyService.getOntologyLabel(t.map(r=>r.type))[0].rico;i=Array.from(new Set(i)),this.allRicoClasses=i,console.log("Classes RICO (no duplicates) ",this.allRicoClasses)}catch(e){console.error("ERROR in getOntologyLabel:",e)}this.cdr.markForCheck()},error:t=>{console.error(t)}}),this.detailTab="ric",this.ontologyService.getTypes().subscribe({next:t=>{console.log("Types d'ontology ",t),this.ontologyLabels=this.ontologyService.getOntologyLabel(t),console.log("Labels d'ontology ",this.ontologyLabels),this.cdr.markForCheck()}}),this.projetService.getProject().subscribe({next:t=>{this.projectName=t.name,this.cdr.markForCheck()},error:t=>{console.error(t)}})}getKey(t){return Object.keys(t)[0]}handleChildData(t){console.log("Received from child:",t),this.selectedEntity=L({},t),this.detailTab="ric",this.cdr.markForCheck()}getValuesOfKey(t){let e=this.getKey(t);return t[e]}backToPreviousEntity(){if(this.previousSelectedEntity){let t=this.previousSelectedEntity;this.previousSelectedEntity=null,this.selectEntity(t)}}getAllEntitiesByPath(t,e){this.selectedType=e,this.selectedOntology=t;let i=this.ontologyService.getTypeUrlByName(t??"");i&&this.ontologyService.getAllEntitiesByType(i+e).subscribe({next:r=>{console.log("Entities for type ",e," : ",r),this.formattedEntities=r,this.cdr.markForCheck()},error:r=>{console.error(r)}})}selectEntity(t){this.selectedEntity=t}editEntity(t,e){e.stopPropagation(),console.log("Edit entity:",t)}saveEntity(){this.selectedEntity&&console.log("Saving entity:",this.selectedEntity)}exportData(){console.log("Exporting data...");let t=JSON.stringify(this.formattedEntities,null,2),e=new Blob([t],{type:"application/json"}),i=URL.createObjectURL(e),r=document.createElement("a");r.href=i,r.download=`ric-o-export-${new Date().toISOString().split("T")[0]}.json`,r.click(),URL.revokeObjectURL(i)}getIconPath(t){let e={calendar:"M8 2v3m8-3v3m-9 8h10M5 21h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v12a2 2 0 002 2z",user:"M16 7a4 4 0 11-8 0 4 4 0 018 0zM12 14a7 7 0 00-7 7h14a7 7 0 00-7-7z","file-text":"M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z",copy:"M8 16H6a2 2 0 01-2-2V6a2 2 0 012-2h8a2 2 0 012 2v2m-6 12h8a2 2 0 002-2v-8a2 2 0 00-2-2h-8a2 2 0 00-2 2v8a2 2 0 002 2z",users:"M12 4.354a4 4 0 110 5.292M15 21H3v-1a6 6 0 0112 0v1zm0 0h6v-1a6 6 0 00-9-5.197M13 7a4 4 0 11-8 0 4 4 0 018 0z","map-pin":"M17.657 16.657L13.414 20.9a1.998 1.998 0 01-2.827 0l-4.244-4.243a8 8 0 1111.314 0z M15 11a3 3 0 11-6 0 3 3 0 016 0z",archive:"M5 8h14M5 8a2 2 0 110-4h14a2 2 0 110 4M5 8v10a2 2 0 002 2h10a2 2 0 002-2V8m-9 4h4"};return e[t]||e["file-text"]}setView(t){this.activeView=t}static \u0275fac=function(e){return new(e||n)(K(Mt),K(ui),K($r),K(Se),K(lt))};static \u0275cmp=q({type:n,selectors:[["app-gestion-ressources"]],decls:37,vars:13,consts:[["spinner",""],["accordionItem","cdkAccordionItem"],[1,"flex","flex-col","h-screen","bg-gray-50"],[1,"bg-gradient-to-r","from-blue-900","to-blue-600","shadow-lg"],[1,"flex","items-center","justify-between","px-6","py-4"],[1,"flex","items-center","gap-4"],[1,"flex","items-center","justify-center","w-10","h-10","bg-white/20","backdrop-blur-sm","rounded-xl","hover:bg-white/30","transition-all","duration-300","cursor-pointer"],["fill","none","stroke","currentColor","viewBox","0 0 24 24",1,"w-6","h-6","text-white"],["stroke-linecap","round","stroke-linejoin","round","stroke-width","2","d","M12 2L2 7l10 5 10-5-10-5z"],["stroke-linecap","round","stroke-linejoin","round","stroke-width","2","d","M2 17l10 5 10-5"],["stroke-linecap","round","stroke-linejoin","round","stroke-width","2","d","M2 12l10 5 10-5"],["class","text-xl font-bold text-white tracking-tight",4,"ngIf","ngIfElse"],[1,"text-xs","text-blue-100"],[1,"cursor-pointer","flex","items-center","gap-2","px-3","py-1.5","bg-white/10","hover:bg-white/20","backdrop-blur-md","rounded-lg","transition-colors",3,"click"],["fill","none","stroke","currentColor","viewBox","0 0 24 24",1,"w-4","h-4","text-white"],["stroke-linecap","round","stroke-linejoin","round","stroke-width","2","d","M15 19l-7-7 7-7"],[1,"text-sm","text-white","font-medium"],["fill","none","stroke","currentColor","viewBox","0 0 24 24",1,"w-4","h-4","text-white","rotate-180"],["role","tab","aria-label","SPARQL view",1,"cursor-pointer","flex","items-center","gap-2","px-4","py-2","rounded-md","text-sm","font-medium","transition-all","duration-200","hover:bg-white/20",3,"click"],["fill","none","stroke","currentColor","viewBox","0 0 24 24",1,"w-4","h-4"],["points","16 18 22 12 16 6","stroke-width","2"],["points","8 6 2 12 8 18","stroke-width","2"],[1,"flex","flex-1","overflow-hidden"],["class","w-[35%] bg-white border-r border-gray-200 overflow-y-auto shadow-sm flex flex-col",4,"ngIf"],["class","p-0! w-[85%]!",4,"ngIf"],["class","flex-1 flex items-start justify-center overflow-y-auto bg-gray-50",4,"ngIf"],["class","w-200! bg-white border-l border-gray-200 overflow-y-auto shadow-xl",4,"ngIf"],[1,"text-xl","font-bold","text-white","tracking-tight"],[1,"flex","items-center","gap-2"],["xmlns","http://www.w3.org/2000/svg","fill","none","viewBox","0 0 24 24",1,"animate-spin","h-5","w-5","text-white","opacity-70"],["cx","12","cy","12","r","10","stroke","currentColor","stroke-width","4",1,"opacity-25"],["fill","currentColor","d","M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4z",1,"opacity-75"],[1,"text-white","opacity-50","text-sm","italic"],[1,"w-[35%]","bg-white","border-r","border-gray-200","overflow-y-auto","shadow-sm","flex","flex-col"],[1,"p-4","flex-1"],[1,"flex","mb-4","pb-2","border-b","border-gray-100","items-center","justify-between"],[1,"flex","items-center","gap-3"],[1,"cursor-pointer","flex","items-center","gap-2","px-3","py-1.5","rounded-lg","hover:bg-gray-50","hover:text-gray-900","border-none","transition-all","duration-200","shadow-sm","hover:shadow",3,"click"],["fill","none","stroke","blue","viewBox","0 0 24 24",1,"w-4","h-4"],["stroke-linecap","round","stroke-linejoin","round","stroke-width","2","d","M10.325 4.317c.426-1.756 2.924-1.756 3.35 0a1.724 1.724 0 002.573 1.066c1.543-.94 3.31.826 2.37 2.37a1.724 1.724 0 001.065 2.572c1.756.426 1.756 2.924 0 3.35a1.724 1.724 0 00-1.066 2.573c.94 1.543-.826 3.31-2.37 2.37a1.724 1.724 0 00-2.572 1.065c-.426 1.756-2.924 1.756-3.35 0a1.724 1.724 0 00-2.573-1.066c-1.543.94-3.31-.826-2.37-2.37a1.724 1.724 0 00-1.065-2.572c-1.756-.426-1.756-2.924 0-3.35a1.724 1.724 0 001.066-2.573c-.94-1.543.826-3.31 2.37-2.37.996.608 2.296.07 2.572-1.065z"],["stroke-linecap","round","stroke-linejoin","round","stroke-width","2","d","M15 12a3 3 0 11-6 0 3 3 0 016 0z"],[1,"text-sm","font-semibold","text-gray-700","uppercase","tracking-wider"],[1,"flex","flex-col","gap-2"],["class","!border-none !shadow-none !rounded-lg overflow-hidden transition-all duration-200",3,"!bg-gray-50","opened","closed",4,"ngFor","ngForOf"],["class","text-center py-12 px-4",4,"ngIf"],[1,"!border-none","!shadow-none","!rounded-lg","overflow-hidden","transition-all","duration-200",3,"opened","closed"],[1,"!px-3","!py-2","hover:!bg-gray-50","transition-colors","duration-150","rounded-lg"],[1,"text-sm","font-medium","text-gray-700"],["class","justify-end",4,"ngIf"],["class","example-accordion",4,"ngIf"],[1,"justify-end"],[1,"text-xs","text-gray-400"],[1,"example-accordion"],[1,"example-accordion-item"],["tabindex","0",1,"example-accordion-item-header","p-5!",3,"click"],[1,"flex","items-center","justify-between","w-full"],["class","text-xs text-gray-400 mr-2",4,"ngIf"],[1,"example-accordion-item-description","flex","items-center"],["fill","none","stroke","currentColor","viewBox","0 0 24 24",1,"w-5","h-5","transition-transform","duration-300",3,"ngClass"],["stroke-linecap","round","stroke-linejoin","round","stroke-width","2","d","M19 9l-7 7-7-7"],[1,"w-full","text-center!","px-4!","py-3!","text-sm","rounded-lg","hover:bg-gray-50","transition-all","duration-150","group","relative",3,"bg-blue-50","border-l-3","border-l-blue-500","text-blue-700"],[1,"text-xs","text-gray-400","mr-2"],["class","w-full text-center! px-4! py-3! text-sm rounded-lg hover:bg-gray-50 transition-all duration-150 group relative",3,"bg-blue-50","border-l-3","border-l-blue-500","text-blue-700","click",4,"ngFor","ngForOf"],[1,"w-full","text-center!","px-4!","py-3!","text-sm","rounded-lg","hover:bg-gray-50","transition-all","duration-150","group","relative",3,"click"],[1,"flex","items-center","justify-between"],[1,"text-sm","font-medium","group-hover:text-gray-900","transition-colors","duration-150"],["class","text-blue-500 text-xs",4,"ngIf"],[1,"text-blue-500","text-xs"],[1,"text-center","py-12","px-4"],[1,"inline-flex","items-center","justify-center","w-12","h-12","bg-gray-50","rounded-full","mb-3"],["fill","none","stroke","currentColor","viewBox","0 0 24 24",1,"h-6","w-6","text-gray-400"],["stroke-linecap","round","stroke-linejoin","round","stroke-width","1.5","d","M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z"],[1,"text-sm","font-medium","text-gray-500"],[1,"text-xs","text-gray-400","mt-1"],[1,"p-0!","w-[85%]!"],[1,"p-1!","flex-1","overflow-y-auto","bg-gray-50"],[3,"selectedType","allEntities","selectedEntity",4,"ngIf"],[3,"selectedEntity","selectedType","allEntities"],[1,"flex-1","flex","items-start","justify-center","overflow-y-auto","bg-gray-50"],[1,"w-full","max-w-5xl"],[1,"w-200!","bg-white","border-l","border-gray-200","overflow-y-auto","shadow-xl"],[1,"p-6"],[3,"close","ontologyLabels","selectedEntityId"]],template:function(e,i){if(e&1){let r=T();s(0,"div",2)(1,"header",3)(2,"div",4)(3,"div",5)(4,"div",6),b(),s(5,"svg",7),g(6,"path",8)(7,"path",9)(8,"path",10),l()(),S(),s(9,"div"),w(10,jh,2,1,"h1",11)(11,Vh,6,0,"ng-template",null,0,co),s(13,"p",12),u(14,"RDF Entity Management System"),l()()(),s(15,"div",5)(16,"button",13),_("click",function(){return y(r),v(i.router.navigate(["/gestion-projets"]))}),b(),s(17,"svg",14),g(18,"path",15),l(),S(),s(19,"span",16),u(20,"Projects"),l()(),s(21,"button",13),_("click",function(){return y(r),v(i.router.navigate(["/gestion-sources"]))}),s(22,"span",16),u(23,"Datasources"),l(),b(),s(24,"svg",17),g(25,"path",15),l()(),S(),s(26,"button",18),_("click",function(){return y(r),v(i.setView("sparql"))}),b(),s(27,"svg",19),g(28,"polyline",20)(29,"polyline",21),l(),S(),s(30,"span"),u(31,"SPARQL"),l()()()()(),s(32,"div",22),w(33,Jh,13,2,"aside",23)(34,tf,3,2,"div",24)(35,nf,3,1,"div",25)(36,rf,3,3,"aside",26),l()()}if(e&2){let r=wt(12);d(10),f("ngIf",i.projectName)("ngIfElse",r),d(16),I("bg-white",i.activeView==="sparql")("text-blue-600",i.activeView==="sparql")("shadow-sm",i.activeView==="sparql"),he("aria-selected",i.activeView==="sparql"),d(7),f("ngIf",i.activeView!=="sparql"),d(),f("ngIf",i.activeView==="tableau"),d(),f("ngIf",i.activeView==="sparql"),d(),f("ngIf",i.selectedEntity&&i.activeView!=="sparql")}},dependencies:[be,bn,nt,He,rt,Et,Tc,Ec,wa,Ca,kc,Sc,An,Mc,Ue,jr,Fr,Nr,Gr,Hr,Ur],styles:["@keyframes _ngcontent-%COMP%_fade-in{0%{opacity:0}to{opacity:1}}@keyframes _ngcontent-%COMP%_slide-in{0%{transform:translate(100%);opacity:0}to{transform:translate(0);opacity:1}}@keyframes _ngcontent-%COMP%_slide-down{0%{transform:translateY(-10px);opacity:0}to{transform:translateY(0);opacity:1}}.animate-fade-in[_ngcontent-%COMP%]{animation:_ngcontent-%COMP%_fade-in .3s ease-in-out}.animate-slide-in[_ngcontent-%COMP%]{animation:_ngcontent-%COMP%_slide-in .3s ease-out} .snackbar-success{background:#10b981!important;color:#fff!important} .snackbar-error{background:#ef4444!important;color:#fff!important} .snackbar-warning{background:#f59e0b!important;color:#fff!important} .snackbar-info{background:#3b82f6!important;color:#fff!important}[_ngcontent-%COMP%]::-webkit-scrollbar{width:8px;height:8px}[_ngcontent-%COMP%]::-webkit-scrollbar-track{background:#f1f5f9}[_ngcontent-%COMP%]::-webkit-scrollbar-thumb{background:#cbd5e1;border-radius:4px}[_ngcontent-%COMP%]::-webkit-scrollbar-thumb:hover{background:#94a3b8}tr.group[_ngcontent-%COMP%]:hover .opacity-0[_ngcontent-%COMP%]{opacity:1}@media (max-width: 768px){.hidden-mobile[_ngcontent-%COMP%]{display:none}}.filter-container[_ngcontent-%COMP%]{position:relative}.filter-container[_ngcontent-%COMP%] .filter-button.active[_ngcontent-%COMP%]{background-color:#3f51b51a;color:#3f51b5}.filter-menu[_ngcontent-%COMP%]{position:absolute;top:50px;right:0;background:#fff;border-radius:8px;box-shadow:0 4px 12px #00000026;padding:16px;min-width:300px;z-index:1000}.filter-menu[_ngcontent-%COMP%] .filter-section[_ngcontent-%COMP%]{margin-bottom:16px}.filter-menu[_ngcontent-%COMP%] .filter-section[_ngcontent-%COMP%] h4[_ngcontent-%COMP%]{font-size:12px;font-weight:600;text-transform:uppercase;color:#666;margin:0 0 8px}.filter-menu[_ngcontent-%COMP%] .filter-section[_ngcontent-%COMP%] .filter-options[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;gap:8px}.filter-menu[_ngcontent-%COMP%] .filter-section[_ngcontent-%COMP%] .filter-options[_ngcontent-%COMP%] button[_ngcontent-%COMP%]{font-size:13px;padding:6px 12px;border:1px solid #ddd;border-radius:4px;background:#fff;transition:all .2s}.filter-menu[_ngcontent-%COMP%] .filter-section[_ngcontent-%COMP%] .filter-options[_ngcontent-%COMP%] button.active[_ngcontent-%COMP%]{background-color:#3f51b5;color:#fff;border-color:#3f51b5}.filter-menu[_ngcontent-%COMP%] .filter-section[_ngcontent-%COMP%] .filter-options[_ngcontent-%COMP%] button[_ngcontent-%COMP%]:hover:not(.active){background-color:#f5f5f5}.filter-menu[_ngcontent-%COMP%] .filter-section[_ngcontent-%COMP%] .search-field[_ngcontent-%COMP%]{width:100%;margin-top:8px}.filter-menu[_ngcontent-%COMP%] .filter-actions[_ngcontent-%COMP%]{border-top:1px solid #eee;padding-top:12px;text-align:right}.filter-menu[_ngcontent-%COMP%] .filter-actions[_ngcontent-%COMP%] button[_ngcontent-%COMP%]{color:#666;font-size:13px}.stats-dialog-overlay[_ngcontent-%COMP%]{position:fixed;inset:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:2000;animation:_ngcontent-%COMP%_fadeIn .2s}.stats-dialog[_ngcontent-%COMP%]{background:#fff;border-radius:12px;padding:24px;max-width:600px;width:90%;max-height:80vh;overflow-y:auto;box-shadow:0 8px 32px #0003;animation:_ngcontent-%COMP%_slideUp .3s}.stats-dialog[_ngcontent-%COMP%] .stats-header[_ngcontent-%COMP%]{display:flex;justify-content:space-between;align-items:center;margin-bottom:24px;padding-bottom:16px;border-bottom:2px solid #f0f0f0}.stats-dialog[_ngcontent-%COMP%] .stats-header[_ngcontent-%COMP%] h2[_ngcontent-%COMP%]{margin:0;font-size:24px;font-weight:600;color:#333}.stats-dialog[_ngcontent-%COMP%] .stats-content[_ngcontent-%COMP%]{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:16px}.stats-dialog[_ngcontent-%COMP%] .stat-card[_ngcontent-%COMP%]{background:linear-gradient(135deg,#f5f7fa,#c3cfe2);border-radius:12px;padding:20px;display:flex;align-items:center;gap:16px;transition:transform .2s}.stats-dialog[_ngcontent-%COMP%] .stat-card[_ngcontent-%COMP%]:hover{transform:translateY(-4px)}.stats-dialog[_ngcontent-%COMP%] .stat-card.full-width[_ngcontent-%COMP%]{grid-column:1/-1}.stats-dialog[_ngcontent-%COMP%] .stat-card[_ngcontent-%COMP%] .stat-icon[_ngcontent-%COMP%]{width:48px;height:48px;border-radius:50%;display:flex;align-items:center;justify-content:center;background:#fff;color:#3f51b5}.stats-dialog[_ngcontent-%COMP%] .stat-card[_ngcontent-%COMP%] .stat-icon.internal[_ngcontent-%COMP%]{background:#e3f2fd;color:#1976d2}.stats-dialog[_ngcontent-%COMP%] .stat-card[_ngcontent-%COMP%] .stat-icon.external[_ngcontent-%COMP%]{background:#f3e5f5;color:#7b1fa2}.stats-dialog[_ngcontent-%COMP%] .stat-card[_ngcontent-%COMP%] .stat-icon.editable[_ngcontent-%COMP%]{background:#e8f5e9;color:#388e3c}.stats-dialog[_ngcontent-%COMP%] .stat-card[_ngcontent-%COMP%] .stat-icon.readonly[_ngcontent-%COMP%]{background:#ffebee;color:#d32f2f}.stats-dialog[_ngcontent-%COMP%] .stat-card[_ngcontent-%COMP%] .stat-icon.tools[_ngcontent-%COMP%]{background:#fff3e0;color:#f57c00}.stats-dialog[_ngcontent-%COMP%] .stat-card[_ngcontent-%COMP%] .stat-icon[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{font-size:28px;width:28px;height:28px}.stats-dialog[_ngcontent-%COMP%] .stat-card[_ngcontent-%COMP%] .stat-info[_ngcontent-%COMP%]{flex:1}.stats-dialog[_ngcontent-%COMP%] .stat-card[_ngcontent-%COMP%] .stat-info[_ngcontent-%COMP%] .stat-value[_ngcontent-%COMP%]{font-size:32px;font-weight:700;color:#333;line-height:1;margin-bottom:4px}.stats-dialog[_ngcontent-%COMP%] .stat-card[_ngcontent-%COMP%] .stat-info[_ngcontent-%COMP%] .stat-label[_ngcontent-%COMP%]{font-size:13px;color:#666;text-transform:uppercase;letter-spacing:.5px}.stats-dialog[_ngcontent-%COMP%] .stat-card[_ngcontent-%COMP%] .stat-info[_ngcontent-%COMP%] .tools-list[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;gap:8px;margin-top:8px}.stats-dialog[_ngcontent-%COMP%] .stat-card[_ngcontent-%COMP%] .stat-info[_ngcontent-%COMP%] .tools-list[_ngcontent-%COMP%] .tool-chip[_ngcontent-%COMP%]{background:#fff;padding:4px 12px;border-radius:16px;font-size:12px;font-weight:500;color:#333}@keyframes _ngcontent-%COMP%_fadeIn{0%{opacity:0}to{opacity:1}}@keyframes _ngcontent-%COMP%_slideUp{0%{transform:translateY(20px);opacity:0}to{transform:translateY(0);opacity:1}}.stats-button[_ngcontent-%COMP%]:hover, .filter-button[_ngcontent-%COMP%]:hover, .export-button[_ngcontent-%COMP%]:hover{background-color:#3f51b514}.example-accordion[_ngcontent-%COMP%]{display:block;max-width:500px}.example-accordion-item[_ngcontent-%COMP%]{display:block;border:solid 1px #ccc}.example-accordion-item[_ngcontent-%COMP%] + .example-accordion-item[_ngcontent-%COMP%]{border-top:none}.example-accordion-item-header[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:space-between;width:100%;height:100%;background:none;border:none;padding:10px;text-align:center;color:#16079e!important;text-weight:bold}.example-accordion-item-description[_ngcontent-%COMP%]{font-size:.85em;color:#999}.example-accordion-item-body[_ngcontent-%COMP%]{padding:10px}.example-accordion-item-header[_ngcontent-%COMP%]:hover{cursor:pointer;background-color:#eee}.example-accordion-item[_ngcontent-%COMP%]:first-child{border-top-left-radius:4px;border-top-right-radius:4px}.example-accordion-item[_ngcontent-%COMP%]:last-child{border-bottom-left-radius:4px;border-bottom-right-radius:4px}"],data:{animation:[Vo("slideIn",[cr(":enter",[It({transform:"translateX(100%)",opacity:0}),lr("300ms ease-out",It({transform:"translateX(0)",opacity:1}))]),cr(":leave",[lr("200ms ease-in",It({transform:"translateX(100%)",opacity:0}))])])]},changeDetection:0})};var Dc=[{path:"",redirectTo:"/gestion-projets",pathMatch:"full"},{path:"gestion-projets",component:Pr},{path:"gestion-sources",component:Or},{path:"gestion-ressources",component:qr},{path:"files",component:On}];var Rc={providers:[Za({eventCoalescing:!0}),No(Dc),ss(as()),ns(rs()),lc()]};var Wr=class n{title="Frontend";static \u0275fac=function(e){return new(e||n)};static \u0275cmp=q({type:n,selectors:[["app-root"]],decls:1,vars:0,template:function(e,i){e&1&&g(0,"router-outlet")},dependencies:[en],encapsulation:2})};is(Wr,Rc).catch(n=>console.error(n));
diff --git a/electron/dist/frontend/browser/polyfills-B6TNHZQ6.js b/electron/dist/frontend/browser/polyfills-B6TNHZQ6.js
new file mode 100644
index 00000000..9590af50
--- /dev/null
+++ b/electron/dist/frontend/browser/polyfills-B6TNHZQ6.js
@@ -0,0 +1,2 @@
+var ce=globalThis;function te(t){return(ce.__Zone_symbol_prefix||"__zone_symbol__")+t}function ht(){let t=ce.performance;function n(I){t&&t.mark&&t.mark(I)}function a(I,s){t&&t.measure&&t.measure(I,s)}n("Zone");class e{static __symbol__=te;static assertZonePatched(){if(ce.Promise!==S.ZoneAwarePromise)throw new Error("Zone.js has detected that ZoneAwarePromise `(window|global).Promise` has been overwritten.\nMost likely cause is that a Promise polyfill has been loaded after Zone.js (Polyfilling Promise api is not necessary when zone.js is loaded. If you must load one, do so before loading zone.js.)")}static get root(){let s=e.current;for(;s.parent;)s=s.parent;return s}static get current(){return b.zone}static get currentTask(){return D}static __load_patch(s,i,r=!1){if(S.hasOwnProperty(s)){let E=ce[te("forceDuplicateZoneCheck")]===!0;if(!r&&E)throw Error("Already loaded patch: "+s)}else if(!ce["__Zone_disable_"+s]){let E="Zone:"+s;n(E),S[s]=i(ce,e,R),a(E,E)}}get parent(){return this._parent}get name(){return this._name}_parent;_name;_properties;_zoneDelegate;constructor(s,i){this._parent=s,this._name=i?i.name||"unnamed":"",this._properties=i&&i.properties||{},this._zoneDelegate=new f(this,this._parent&&this._parent._zoneDelegate,i)}get(s){let i=this.getZoneWith(s);if(i)return i._properties[s]}getZoneWith(s){let i=this;for(;i;){if(i._properties.hasOwnProperty(s))return i;i=i._parent}return null}fork(s){if(!s)throw new Error("ZoneSpec required!");return this._zoneDelegate.fork(this,s)}wrap(s,i){if(typeof s!="function")throw new Error("Expecting function got: "+s);let r=this._zoneDelegate.intercept(this,s,i),E=this;return function(){return E.runGuarded(r,this,arguments,i)}}run(s,i,r,E){b={parent:b,zone:this};try{return this._zoneDelegate.invoke(this,s,i,r,E)}finally{b=b.parent}}runGuarded(s,i=null,r,E){b={parent:b,zone:this};try{try{return this._zoneDelegate.invoke(this,s,i,r,E)}catch(x){if(this._zoneDelegate.handleError(this,x))throw x}}finally{b=b.parent}}runTask(s,i,r){if(s.zone!=this)throw new Error("A task can only be run in the zone of creation! (Creation: "+(s.zone||J).name+"; Execution: "+this.name+")");let E=s,{type:x,data:{isPeriodic:ee=!1,isRefreshable:M=!1}={}}=s;if(s.state===q&&(x===U||x===k))return;let he=s.state!=A;he&&E._transitionTo(A,d);let _e=D;D=E,b={parent:b,zone:this};try{x==k&&s.data&&!ee&&!M&&(s.cancelFn=void 0);try{return this._zoneDelegate.invokeTask(this,E,i,r)}catch(Q){if(this._zoneDelegate.handleError(this,Q))throw Q}}finally{let Q=s.state;if(Q!==q&&Q!==X)if(x==U||ee||M&&Q===p)he&&E._transitionTo(d,A,p);else{let Te=E._zoneDelegates;this._updateTaskCount(E,-1),he&&E._transitionTo(q,A,q),M&&(E._zoneDelegates=Te)}b=b.parent,D=_e}}scheduleTask(s){if(s.zone&&s.zone!==this){let r=this;for(;r;){if(r===s.zone)throw Error(`can not reschedule task to ${this.name} which is descendants of the original zone ${s.zone.name}`);r=r.parent}}s._transitionTo(p,q);let i=[];s._zoneDelegates=i,s._zone=this;try{s=this._zoneDelegate.scheduleTask(this,s)}catch(r){throw s._transitionTo(X,p,q),this._zoneDelegate.handleError(this,r),r}return s._zoneDelegates===i&&this._updateTaskCount(s,1),s.state==p&&s._transitionTo(d,p),s}scheduleMicroTask(s,i,r,E){return this.scheduleTask(new g(F,s,i,r,E,void 0))}scheduleMacroTask(s,i,r,E,x){return this.scheduleTask(new g(k,s,i,r,E,x))}scheduleEventTask(s,i,r,E,x){return this.scheduleTask(new g(U,s,i,r,E,x))}cancelTask(s){if(s.zone!=this)throw new Error("A task can only be cancelled in the zone of creation! (Creation: "+(s.zone||J).name+"; Execution: "+this.name+")");if(!(s.state!==d&&s.state!==A)){s._transitionTo(V,d,A);try{this._zoneDelegate.cancelTask(this,s)}catch(i){throw s._transitionTo(X,V),this._zoneDelegate.handleError(this,i),i}return this._updateTaskCount(s,-1),s._transitionTo(q,V),s.runCount=-1,s}}_updateTaskCount(s,i){let r=s._zoneDelegates;i==-1&&(s._zoneDelegates=null);for(let E=0;EI.hasTask(i,r),onScheduleTask:(I,s,i,r)=>I.scheduleTask(i,r),onInvokeTask:(I,s,i,r,E,x)=>I.invokeTask(i,r,E,x),onCancelTask:(I,s,i,r)=>I.cancelTask(i,r)};class f{get zone(){return this._zone}_zone;_taskCounts={microTask:0,macroTask:0,eventTask:0};_parentDelegate;_forkDlgt;_forkZS;_forkCurrZone;_interceptDlgt;_interceptZS;_interceptCurrZone;_invokeDlgt;_invokeZS;_invokeCurrZone;_handleErrorDlgt;_handleErrorZS;_handleErrorCurrZone;_scheduleTaskDlgt;_scheduleTaskZS;_scheduleTaskCurrZone;_invokeTaskDlgt;_invokeTaskZS;_invokeTaskCurrZone;_cancelTaskDlgt;_cancelTaskZS;_cancelTaskCurrZone;_hasTaskDlgt;_hasTaskDlgtOwner;_hasTaskZS;_hasTaskCurrZone;constructor(s,i,r){this._zone=s,this._parentDelegate=i,this._forkZS=r&&(r&&r.onFork?r:i._forkZS),this._forkDlgt=r&&(r.onFork?i:i._forkDlgt),this._forkCurrZone=r&&(r.onFork?this._zone:i._forkCurrZone),this._interceptZS=r&&(r.onIntercept?r:i._interceptZS),this._interceptDlgt=r&&(r.onIntercept?i:i._interceptDlgt),this._interceptCurrZone=r&&(r.onIntercept?this._zone:i._interceptCurrZone),this._invokeZS=r&&(r.onInvoke?r:i._invokeZS),this._invokeDlgt=r&&(r.onInvoke?i:i._invokeDlgt),this._invokeCurrZone=r&&(r.onInvoke?this._zone:i._invokeCurrZone),this._handleErrorZS=r&&(r.onHandleError?r:i._handleErrorZS),this._handleErrorDlgt=r&&(r.onHandleError?i:i._handleErrorDlgt),this._handleErrorCurrZone=r&&(r.onHandleError?this._zone:i._handleErrorCurrZone),this._scheduleTaskZS=r&&(r.onScheduleTask?r:i._scheduleTaskZS),this._scheduleTaskDlgt=r&&(r.onScheduleTask?i:i._scheduleTaskDlgt),this._scheduleTaskCurrZone=r&&(r.onScheduleTask?this._zone:i._scheduleTaskCurrZone),this._invokeTaskZS=r&&(r.onInvokeTask?r:i._invokeTaskZS),this._invokeTaskDlgt=r&&(r.onInvokeTask?i:i._invokeTaskDlgt),this._invokeTaskCurrZone=r&&(r.onInvokeTask?this._zone:i._invokeTaskCurrZone),this._cancelTaskZS=r&&(r.onCancelTask?r:i._cancelTaskZS),this._cancelTaskDlgt=r&&(r.onCancelTask?i:i._cancelTaskDlgt),this._cancelTaskCurrZone=r&&(r.onCancelTask?this._zone:i._cancelTaskCurrZone),this._hasTaskZS=null,this._hasTaskDlgt=null,this._hasTaskDlgtOwner=null,this._hasTaskCurrZone=null;let E=r&&r.onHasTask,x=i&&i._hasTaskZS;(E||x)&&(this._hasTaskZS=E?r:c,this._hasTaskDlgt=i,this._hasTaskDlgtOwner=this,this._hasTaskCurrZone=this._zone,r.onScheduleTask||(this._scheduleTaskZS=c,this._scheduleTaskDlgt=i,this._scheduleTaskCurrZone=this._zone),r.onInvokeTask||(this._invokeTaskZS=c,this._invokeTaskDlgt=i,this._invokeTaskCurrZone=this._zone),r.onCancelTask||(this._cancelTaskZS=c,this._cancelTaskDlgt=i,this._cancelTaskCurrZone=this._zone))}fork(s,i){return this._forkZS?this._forkZS.onFork(this._forkDlgt,this.zone,s,i):new e(s,i)}intercept(s,i,r){return this._interceptZS?this._interceptZS.onIntercept(this._interceptDlgt,this._interceptCurrZone,s,i,r):i}invoke(s,i,r,E,x){return this._invokeZS?this._invokeZS.onInvoke(this._invokeDlgt,this._invokeCurrZone,s,i,r,E,x):i.apply(r,E)}handleError(s,i){return this._handleErrorZS?this._handleErrorZS.onHandleError(this._handleErrorDlgt,this._handleErrorCurrZone,s,i):!0}scheduleTask(s,i){let r=i;if(this._scheduleTaskZS)this._hasTaskZS&&r._zoneDelegates.push(this._hasTaskDlgtOwner),r=this._scheduleTaskZS.onScheduleTask(this._scheduleTaskDlgt,this._scheduleTaskCurrZone,s,i),r||(r=i);else if(i.scheduleFn)i.scheduleFn(i);else if(i.type==F)z(i);else throw new Error("Task is missing scheduleFn.");return r}invokeTask(s,i,r,E){return this._invokeTaskZS?this._invokeTaskZS.onInvokeTask(this._invokeTaskDlgt,this._invokeTaskCurrZone,s,i,r,E):i.callback.apply(r,E)}cancelTask(s,i){let r;if(this._cancelTaskZS)r=this._cancelTaskZS.onCancelTask(this._cancelTaskDlgt,this._cancelTaskCurrZone,s,i);else{if(!i.cancelFn)throw Error("Task is not cancelable");r=i.cancelFn(i)}return r}hasTask(s,i){try{this._hasTaskZS&&this._hasTaskZS.onHasTask(this._hasTaskDlgt,this._hasTaskCurrZone,s,i)}catch(r){this.handleError(s,r)}}_updateTaskCount(s,i){let r=this._taskCounts,E=r[s],x=r[s]=E+i;if(x<0)throw new Error("More tasks executed then were scheduled.");if(E==0||x==0){let ee={microTask:r.microTask>0,macroTask:r.macroTask>0,eventTask:r.eventTask>0,change:s};this.hasTask(this._zone,ee)}}}class g{type;source;invoke;callback;data;scheduleFn;cancelFn;_zone=null;runCount=0;_zoneDelegates=null;_state="notScheduled";constructor(s,i,r,E,x,ee){if(this.type=s,this.source=i,this.data=E,this.scheduleFn=x,this.cancelFn=ee,!r)throw new Error("callback is not defined");this.callback=r;let M=this;s===U&&E&&E.useG?this.invoke=g.invokeTask:this.invoke=function(){return g.invokeTask.call(ce,M,this,arguments)}}static invokeTask(s,i,r){s||(s=this),K++;try{return s.runCount++,s.zone.runTask(s,i,r)}finally{K==1&&$(),K--}}get zone(){return this._zone}get state(){return this._state}cancelScheduleRequest(){this._transitionTo(q,p)}_transitionTo(s,i,r){if(this._state===i||this._state===r)this._state=s,s==q&&(this._zoneDelegates=null);else throw new Error(`${this.type} '${this.source}': can not transition to '${s}', expecting state '${i}'${r?" or '"+r+"'":""}, was '${this._state}'.`)}toString(){return this.data&&typeof this.data.handleId<"u"?this.data.handleId.toString():Object.prototype.toString.call(this)}toJSON(){return{type:this.type,state:this.state,source:this.source,zone:this.zone.name,runCount:this.runCount}}}let T=te("setTimeout"),y=te("Promise"),w=te("then"),_=[],P=!1,L;function H(I){if(L||ce[y]&&(L=ce[y].resolve(0)),L){let s=L[w];s||(s=L.then),s.call(L,I)}else ce[T](I,0)}function z(I){K===0&&_.length===0&&H($),I&&_.push(I)}function $(){if(!P){for(P=!0;_.length;){let I=_;_=[];for(let s=0;sb,onUnhandledError:W,microtaskDrainDone:W,scheduleMicroTask:z,showUncaughtError:()=>!e[te("ignoreConsoleErrorUncaughtError")],patchEventTarget:()=>[],patchOnProperties:W,patchMethod:()=>W,bindArguments:()=>[],patchThen:()=>W,patchMacroTask:()=>W,patchEventPrototype:()=>W,isIEOrEdge:()=>!1,getGlobalObjects:()=>{},ObjectDefineProperty:()=>W,ObjectGetOwnPropertyDescriptor:()=>{},ObjectCreate:()=>{},ArraySlice:()=>[],patchClass:()=>W,wrapWithCurrentZone:()=>W,filterProperties:()=>[],attachOriginToPatched:()=>W,_redefineProperty:()=>W,patchCallbacks:()=>W,nativeScheduleMicroTask:H},b={parent:null,zone:new e(null,null)},D=null,K=0;function W(){}return a("Zone","Zone"),e}function dt(){let t=globalThis,n=t[te("forceDuplicateZoneCheck")]===!0;if(t.Zone&&(n||typeof t.Zone.__symbol__!="function"))throw new Error("Zone already loaded.");return t.Zone??=ht(),t.Zone}var pe=Object.getOwnPropertyDescriptor,Me=Object.defineProperty,Ae=Object.getPrototypeOf,_t=Object.create,Tt=Array.prototype.slice,je="addEventListener",He="removeEventListener",Ne=te(je),Ze=te(He),ae="true",le="false",ve=te("");function Ve(t,n){return Zone.current.wrap(t,n)}function xe(t,n,a,e,c){return Zone.current.scheduleMacroTask(t,n,a,e,c)}var j=te,we=typeof window<"u",be=we?window:void 0,Y=we&&be||globalThis,Et="removeAttribute";function Fe(t,n){for(let a=t.length-1;a>=0;a--)typeof t[a]=="function"&&(t[a]=Ve(t[a],n+"_"+a));return t}function gt(t,n){let a=t.constructor.name;for(let e=0;e{let y=function(){return T.apply(this,Fe(arguments,a+"."+c))};return fe(y,T),y})(f)}}}function et(t){return t?t.writable===!1?!1:!(typeof t.get=="function"&&typeof t.set>"u"):!0}var tt=typeof WorkerGlobalScope<"u"&&self instanceof WorkerGlobalScope,De=!("nw"in Y)&&typeof Y.process<"u"&&Y.process.toString()==="[object process]",Ge=!De&&!tt&&!!(we&&be.HTMLElement),nt=typeof Y.process<"u"&&Y.process.toString()==="[object process]"&&!tt&&!!(we&&be.HTMLElement),Ce={},kt=j("enable_beforeunload"),Xe=function(t){if(t=t||Y.event,!t)return;let n=Ce[t.type];n||(n=Ce[t.type]=j("ON_PROPERTY"+t.type));let a=this||t.target||Y,e=a[n],c;if(Ge&&a===be&&t.type==="error"){let f=t;c=e&&e.call(this,f.message,f.filename,f.lineno,f.colno,f.error),c===!0&&t.preventDefault()}else c=e&&e.apply(this,arguments),t.type==="beforeunload"&&Y[kt]&&typeof c=="string"?t.returnValue=c:c!=null&&!c&&t.preventDefault();return c};function Ye(t,n,a){let e=pe(t,n);if(!e&&a&&pe(a,n)&&(e={enumerable:!0,configurable:!0}),!e||!e.configurable)return;let c=j("on"+n+"patched");if(t.hasOwnProperty(c)&&t[c])return;delete e.writable,delete e.value;let f=e.get,g=e.set,T=n.slice(2),y=Ce[T];y||(y=Ce[T]=j("ON_PROPERTY"+T)),e.set=function(w){let _=this;if(!_&&t===Y&&(_=Y),!_)return;typeof _[y]=="function"&&_.removeEventListener(T,Xe),g?.call(_,null),_[y]=w,typeof w=="function"&&_.addEventListener(T,Xe,!1)},e.get=function(){let w=this;if(!w&&t===Y&&(w=Y),!w)return null;let _=w[y];if(_)return _;if(f){let P=f.call(this);if(P)return e.set.call(this,P),typeof w[Et]=="function"&&w.removeAttribute(n),P}return null},Me(t,n,e),t[c]=!0}function rt(t,n,a){if(n)for(let e=0;efunction(g,T){let y=a(g,T);return y.cbIdx>=0&&typeof T[y.cbIdx]=="function"?xe(y.name,T[y.cbIdx],y,c):f.apply(g,T)})}function fe(t,n){t[j("OriginalDelegate")]=n}var $e=!1,Le=!1;function yt(){if($e)return Le;$e=!0;try{let t=be.navigator.userAgent;(t.indexOf("MSIE ")!==-1||t.indexOf("Trident/")!==-1||t.indexOf("Edge/")!==-1)&&(Le=!0)}catch{}return Le}function Je(t){return typeof t=="function"}function Ke(t){return typeof t=="number"}var pt={useG:!0},ne={},ot={},st=new RegExp("^"+ve+"(\\w+)(true|false)$"),it=j("propagationStopped");function ct(t,n){let a=(n?n(t):t)+le,e=(n?n(t):t)+ae,c=ve+a,f=ve+e;ne[t]={},ne[t][le]=c,ne[t][ae]=f}function vt(t,n,a,e){let c=e&&e.add||je,f=e&&e.rm||He,g=e&&e.listeners||"eventListeners",T=e&&e.rmAll||"removeAllListeners",y=j(c),w="."+c+":",_="prependListener",P="."+_+":",L=function(p,d,A){if(p.isRemoved)return;let V=p.callback;typeof V=="object"&&V.handleEvent&&(p.callback=k=>V.handleEvent(k),p.originalDelegate=V);let X;try{p.invoke(p,d,[A])}catch(k){X=k}let F=p.options;if(F&&typeof F=="object"&&F.once){let k=p.originalDelegate?p.originalDelegate:p.callback;d[f].call(d,A.type,k,F)}return X};function H(p,d,A){if(d=d||t.event,!d)return;let V=p||d.target||t,X=V[ne[d.type][A?ae:le]];if(X){let F=[];if(X.length===1){let k=L(X[0],V,d);k&&F.push(k)}else{let k=X.slice();for(let U=0;U{throw U})}}}let z=function(p){return H(this,p,!1)},$=function(p){return H(this,p,!0)};function J(p,d){if(!p)return!1;let A=!0;d&&d.useG!==void 0&&(A=d.useG);let V=d&&d.vh,X=!0;d&&d.chkDup!==void 0&&(X=d.chkDup);let F=!1;d&&d.rt!==void 0&&(F=d.rt);let k=p;for(;k&&!k.hasOwnProperty(c);)k=Ae(k);if(!k&&p[c]&&(k=p),!k||k[y])return!1;let U=d&&d.eventNameToString,S={},R=k[y]=k[c],b=k[j(f)]=k[f],D=k[j(g)]=k[g],K=k[j(T)]=k[T],W;d&&d.prepend&&(W=k[j(d.prepend)]=k[d.prepend]);function I(o,u){return u?typeof o=="boolean"?{capture:o,passive:!0}:o?typeof o=="object"&&o.passive!==!1?{...o,passive:!0}:o:{passive:!0}:o}let s=function(o){if(!S.isExisting)return R.call(S.target,S.eventName,S.capture?$:z,S.options)},i=function(o){if(!o.isRemoved){let u=ne[o.eventName],v;u&&(v=u[o.capture?ae:le]);let C=v&&o.target[v];if(C){for(let m=0;mre.zone.cancelTask(re);o.call(Ee,"abort",ie,{once:!0}),re.removeAbortListener=()=>Ee.removeEventListener("abort",ie)}if(S.target=null,me&&(me.taskData=null),Be&&(S.options.once=!0),typeof re.options!="boolean"&&(re.options=se),re.target=N,re.capture=Se,re.eventName=Z,B&&(re.originalDelegate=G),O?ge.unshift(re):ge.push(re),m)return N}};return k[c]=l(R,w,ee,M,F),W&&(k[_]=l(W,P,E,M,F,!0)),k[f]=function(){let o=this||t,u=arguments[0];d&&d.transferEventName&&(u=d.transferEventName(u));let v=arguments[2],C=v?typeof v=="boolean"?!0:v.capture:!1,m=arguments[1];if(!m)return b.apply(this,arguments);if(V&&!V(b,m,o,arguments))return;let O=ne[u],N;O&&(N=O[C?ae:le]);let Z=N&&o[N];if(Z)for(let G=0;Gfunction(c,f){c[it]=!0,e&&e.apply(c,f)})}function Pt(t,n){n.patchMethod(t,"queueMicrotask",a=>function(e,c){Zone.current.scheduleMicroTask("queueMicrotask",c[0])})}var Re=j("zoneTask");function ke(t,n,a,e){let c=null,f=null;n+=e,a+=e;let g={};function T(w){let _=w.data;_.args[0]=function(){return w.invoke.apply(this,arguments)};let P=c.apply(t,_.args);return Ke(P)?_.handleId=P:(_.handle=P,_.isRefreshable=Je(P.refresh)),w}function y(w){let{handle:_,handleId:P}=w.data;return f.call(t,_??P)}c=ue(t,n,w=>function(_,P){if(Je(P[0])){let L={isRefreshable:!1,isPeriodic:e==="Interval",delay:e==="Timeout"||e==="Interval"?P[1]||0:void 0,args:P},H=P[0];P[0]=function(){try{return H.apply(this,arguments)}finally{let{handle:A,handleId:V,isPeriodic:X,isRefreshable:F}=L;!X&&!F&&(V?delete g[V]:A&&(A[Re]=null))}};let z=xe(n,P[0],L,T,y);if(!z)return z;let{handleId:$,handle:J,isRefreshable:q,isPeriodic:p}=z.data;if($)g[$]=z;else if(J&&(J[Re]=z,q&&!p)){let d=J.refresh;J.refresh=function(){let{zone:A,state:V}=z;return V==="notScheduled"?(z._state="scheduled",A._updateTaskCount(z,1)):V==="running"&&(z._state="scheduling"),d.call(this)}}return J??$??z}else return w.apply(t,P)}),f=ue(t,a,w=>function(_,P){let L=P[0],H;Ke(L)?(H=g[L],delete g[L]):(H=L?.[Re],H?L[Re]=null:H=L),H?.type?H.cancelFn&&H.zone.cancelTask(H):w.apply(t,P)})}function Rt(t,n){let{isBrowser:a,isMix:e}=n.getGlobalObjects();if(!a&&!e||!t.customElements||!("customElements"in t))return;let c=["connectedCallback","disconnectedCallback","adoptedCallback","attributeChangedCallback","formAssociatedCallback","formDisabledCallback","formResetCallback","formStateRestoreCallback"];n.patchCallbacks(n,t.customElements,"customElements","define",c)}function Ct(t,n){if(Zone[n.symbol("patchEventTarget")])return;let{eventNames:a,zoneSymbolEventNames:e,TRUE_STR:c,FALSE_STR:f,ZONE_SYMBOL_PREFIX:g}=n.getGlobalObjects();for(let y=0;yf.target===t);if(e.length===0)return n;let c=e[0].ignoreProperties;return n.filter(f=>c.indexOf(f)===-1)}function Qe(t,n,a,e){if(!t)return;let c=lt(t,n,a);rt(t,c,e)}function Ie(t){return Object.getOwnPropertyNames(t).filter(n=>n.startsWith("on")&&n.length>2).map(n=>n.substring(2))}function Dt(t,n){if(De&&!nt||Zone[t.symbol("patchEvents")])return;let a=n.__Zone_ignore_on_properties,e=[];if(Ge){let c=window;e=e.concat(["Document","SVGElement","Element","HTMLElement","HTMLBodyElement","HTMLMediaElement","HTMLFrameSetElement","HTMLFrameElement","HTMLIFrameElement","HTMLMarqueeElement","Worker"]);let f=[];Qe(c,Ie(c),a&&a.concat(f),Ae(c))}e=e.concat(["XMLHttpRequest","XMLHttpRequestEventTarget","IDBIndex","IDBRequest","IDBOpenDBRequest","IDBDatabase","IDBTransaction","IDBCursor","WebSocket"]);for(let c=0;c{let a=n[t.__symbol__("legacyPatch")];a&&a()}),t.__load_patch("timers",n=>{let a="set",e="clear";ke(n,a,e,"Timeout"),ke(n,a,e,"Interval"),ke(n,a,e,"Immediate")}),t.__load_patch("requestAnimationFrame",n=>{ke(n,"request","cancel","AnimationFrame"),ke(n,"mozRequest","mozCancel","AnimationFrame"),ke(n,"webkitRequest","webkitCancel","AnimationFrame")}),t.__load_patch("blocking",(n,a)=>{let e=["alert","prompt","confirm"];for(let c=0;cfunction(w,_){return a.current.run(g,n,_,y)})}}),t.__load_patch("EventTarget",(n,a,e)=>{wt(n,e),Ct(n,e);let c=n.XMLHttpRequestEventTarget;c&&c.prototype&&e.patchEventTarget(n,e,[c.prototype])}),t.__load_patch("MutationObserver",(n,a,e)=>{ye("MutationObserver"),ye("WebKitMutationObserver")}),t.__load_patch("IntersectionObserver",(n,a,e)=>{ye("IntersectionObserver")}),t.__load_patch("FileReader",(n,a,e)=>{ye("FileReader")}),t.__load_patch("on_property",(n,a,e)=>{Dt(e,n)}),t.__load_patch("customElements",(n,a,e)=>{Rt(n,e)}),t.__load_patch("XHR",(n,a)=>{w(n);let e=j("xhrTask"),c=j("xhrSync"),f=j("xhrListener"),g=j("xhrScheduled"),T=j("xhrURL"),y=j("xhrErrorBeforeScheduled");function w(_){let P=_.XMLHttpRequest;if(!P)return;let L=P.prototype;function H(R){return R[e]}let z=L[Ne],$=L[Ze];if(!z){let R=_.XMLHttpRequestEventTarget;if(R){let b=R.prototype;z=b[Ne],$=b[Ze]}}let J="readystatechange",q="scheduled";function p(R){let b=R.data,D=b.target;D[g]=!1,D[y]=!1;let K=D[f];z||(z=D[Ne],$=D[Ze]),K&&$.call(D,J,K);let W=D[f]=()=>{if(D.readyState===D.DONE)if(!b.aborted&&D[g]&&R.state===q){let s=D[a.__symbol__("loadfalse")];if(D.status!==0&&s&&s.length>0){let i=R.invoke;R.invoke=function(){let r=D[a.__symbol__("loadfalse")];for(let E=0;Efunction(R,b){return R[c]=b[2]==!1,R[T]=b[1],V.apply(R,b)}),X="XMLHttpRequest.send",F=j("fetchTaskAborting"),k=j("fetchTaskScheduling"),U=ue(L,"send",()=>function(R,b){if(a.current[k]===!0||R[c])return U.apply(R,b);{let D={target:R,url:R[T],isPeriodic:!1,args:b,aborted:!1},K=xe(X,d,D,p,A);R&&R[y]===!0&&!D.aborted&&K.state===q&&K.invoke()}}),S=ue(L,"abort",()=>function(R,b){let D=H(R);if(D&&typeof D.type=="string"){if(D.cancelFn==null||D.data&&D.data.aborted)return;D.zone.cancelTask(D)}else if(a.current[F]===!0)return S.apply(R,b)})}}),t.__load_patch("geolocation",n=>{n.navigator&&n.navigator.geolocation&>(n.navigator.geolocation,["getCurrentPosition","watchPosition"])}),t.__load_patch("PromiseRejectionEvent",(n,a)=>{function e(c){return function(f){at(n,c).forEach(T=>{let y=n.PromiseRejectionEvent;if(y){let w=new y(c,{promise:f.promise,reason:f.rejection});T.invoke(w)}})}}n.PromiseRejectionEvent&&(a[j("unhandledPromiseRejectionHandler")]=e("unhandledrejection"),a[j("rejectionHandledHandler")]=e("rejectionhandled"))}),t.__load_patch("queueMicrotask",(n,a,e)=>{Pt(n,e)})}function Ot(t){t.__load_patch("ZoneAwarePromise",(n,a,e)=>{let c=Object.getOwnPropertyDescriptor,f=Object.defineProperty;function g(h){if(h&&h.toString===Object.prototype.toString){let l=h.constructor&&h.constructor.name;return(l||"")+": "+JSON.stringify(h)}return h?h.toString():Object.prototype.toString.call(h)}let T=e.symbol,y=[],w=n[T("DISABLE_WRAPPING_UNCAUGHT_PROMISE_REJECTION")]!==!1,_=T("Promise"),P=T("then"),L="__creationTrace__";e.onUnhandledError=h=>{if(e.showUncaughtError()){let l=h&&h.rejection;l?console.error("Unhandled Promise rejection:",l instanceof Error?l.message:l,"; Zone:",h.zone.name,"; Task:",h.task&&h.task.source,"; Value:",l,l instanceof Error?l.stack:void 0):console.error(h)}},e.microtaskDrainDone=()=>{for(;y.length;){let h=y.shift();try{h.zone.runGuarded(()=>{throw h.throwOriginal?h.rejection:h})}catch(l){z(l)}}};let H=T("unhandledPromiseRejectionHandler");function z(h){e.onUnhandledError(h);try{let l=a[H];typeof l=="function"&&l.call(this,h)}catch{}}function $(h){return h&&typeof h.then=="function"}function J(h){return h}function q(h){return M.reject(h)}let p=T("state"),d=T("value"),A=T("finally"),V=T("parentPromiseValue"),X=T("parentPromiseState"),F="Promise.then",k=null,U=!0,S=!1,R=0;function b(h,l){return o=>{try{I(h,l,o)}catch(u){I(h,!1,u)}}}let D=function(){let h=!1;return function(o){return function(){h||(h=!0,o.apply(null,arguments))}}},K="Promise resolved with itself",W=T("currentTaskTrace");function I(h,l,o){let u=D();if(h===o)throw new TypeError(K);if(h[p]===k){let v=null;try{(typeof o=="object"||typeof o=="function")&&(v=o&&o.then)}catch(C){return u(()=>{I(h,!1,C)})(),h}if(l!==S&&o instanceof M&&o.hasOwnProperty(p)&&o.hasOwnProperty(d)&&o[p]!==k)i(o),I(h,o[p],o[d]);else if(l!==S&&typeof v=="function")try{v.call(o,u(b(h,l)),u(b(h,!1)))}catch(C){u(()=>{I(h,!1,C)})()}else{h[p]=l;let C=h[d];if(h[d]=o,h[A]===A&&l===U&&(h[p]=h[X],h[d]=h[V]),l===S&&o instanceof Error){let m=a.currentTask&&a.currentTask.data&&a.currentTask.data[L];m&&f(o,W,{configurable:!0,enumerable:!1,writable:!0,value:m})}for(let m=0;m{try{let O=h[d],N=!!o&&A===o[A];N&&(o[V]=O,o[X]=C);let Z=l.run(m,void 0,N&&m!==q&&m!==J?[]:[O]);I(o,!0,Z)}catch(O){I(o,!1,O)}},o)}let E="function ZoneAwarePromise() { [native code] }",x=function(){},ee=n.AggregateError;class M{static toString(){return E}static resolve(l){return l instanceof M?l:I(new this(null),U,l)}static reject(l){return I(new this(null),S,l)}static withResolvers(){let l={};return l.promise=new M((o,u)=>{l.resolve=o,l.reject=u}),l}static any(l){if(!l||typeof l[Symbol.iterator]!="function")return Promise.reject(new ee([],"All promises were rejected"));let o=[],u=0;try{for(let m of l)u++,o.push(M.resolve(m))}catch{return Promise.reject(new ee([],"All promises were rejected"))}if(u===0)return Promise.reject(new ee([],"All promises were rejected"));let v=!1,C=[];return new M((m,O)=>{for(let N=0;N{v||(v=!0,m(Z))},Z=>{C.push(Z),u--,u===0&&(v=!0,O(new ee(C,"All promises were rejected")))})})}static race(l){let o,u,v=new this((O,N)=>{o=O,u=N});function C(O){o(O)}function m(O){u(O)}for(let O of l)$(O)||(O=this.resolve(O)),O.then(C,m);return v}static all(l){return M.allWithCallback(l)}static allSettled(l){return(this&&this.prototype instanceof M?this:M).allWithCallback(l,{thenCallback:u=>({status:"fulfilled",value:u}),errorCallback:u=>({status:"rejected",reason:u})})}static allWithCallback(l,o){let u,v,C=new this((Z,G)=>{u=Z,v=G}),m=2,O=0,N=[];for(let Z of l){$(Z)||(Z=this.resolve(Z));let G=O;try{Z.then(B=>{N[G]=o?o.thenCallback(B):B,m--,m===0&&u(N)},B=>{o?(N[G]=o.errorCallback(B),m--,m===0&&u(N)):v(B)})}catch(B){v(B)}m++,O++}return m-=2,m===0&&u(N),C}constructor(l){let o=this;if(!(o instanceof M))throw new Error("Must be an instanceof Promise.");o[p]=k,o[d]=[];try{let u=D();l&&l(u(b(o,U)),u(b(o,S)))}catch(u){I(o,!1,u)}}get[Symbol.toStringTag](){return"Promise"}get[Symbol.species](){return M}then(l,o){let u=this.constructor?.[Symbol.species];(!u||typeof u!="function")&&(u=this.constructor||M);let v=new u(x),C=a.current;return this[p]==k?this[d].push(C,v,l,o):r(this,C,v,l,o),v}catch(l){return this.then(null,l)}finally(l){let o=this.constructor?.[Symbol.species];(!o||typeof o!="function")&&(o=M);let u=new o(x);u[A]=A;let v=a.current;return this[p]==k?this[d].push(v,u,l,l):r(this,v,u,l,l),u}}M.resolve=M.resolve,M.reject=M.reject,M.race=M.race,M.all=M.all;let he=n[_]=n.Promise;n.Promise=M;let _e=T("thenPatched");function Q(h){let l=h.prototype,o=c(l,"then");if(o&&(o.writable===!1||!o.configurable))return;let u=l.then;l[P]=u,h.prototype.then=function(v,C){return new M((O,N)=>{u.call(this,O,N)}).then(v,C)},h[_e]=!0}e.patchThen=Q;function Te(h){return function(l,o){let u=h.apply(l,o);if(u instanceof M)return u;let v=u.constructor;return v[_e]||Q(v),u}}return he&&(Q(he),ue(n,"fetch",h=>Te(h))),Promise[a.__symbol__("uncaughtPromiseErrors")]=y,M})}function Nt(t){t.__load_patch("toString",n=>{let a=Function.prototype.toString,e=j("OriginalDelegate"),c=j("Promise"),f=j("Error"),g=function(){if(typeof this=="function"){let _=this[e];if(_)return typeof _=="function"?a.call(_):Object.prototype.toString.call(_);if(this===Promise){let P=n[c];if(P)return a.call(P)}if(this===Error){let P=n[f];if(P)return a.call(P)}}return a.call(this)};g[e]=a,Function.prototype.toString=g;let T=Object.prototype.toString,y="[object Promise]";Object.prototype.toString=function(){return typeof Promise=="function"&&this instanceof Promise?y:T.call(this)}})}function Zt(t,n,a,e,c){let f=Zone.__symbol__(e);if(n[f])return;let g=n[f]=n[e];n[e]=function(T,y,w){return y&&y.prototype&&c.forEach(function(_){let P=`${a}.${e}::`+_,L=y.prototype;try{if(L.hasOwnProperty(_)){let H=t.ObjectGetOwnPropertyDescriptor(L,_);H&&H.value?(H.value=t.wrapWithCurrentZone(H.value,P),t._redefineProperty(y.prototype,_,H)):L[_]&&(L[_]=t.wrapWithCurrentZone(L[_],P))}else L[_]&&(L[_]=t.wrapWithCurrentZone(L[_],P))}catch{}}),g.call(n,T,y,w)},t.attachOriginToPatched(n[e],g)}function Lt(t){t.__load_patch("util",(n,a,e)=>{let c=Ie(n);e.patchOnProperties=rt,e.patchMethod=ue,e.bindArguments=Fe,e.patchMacroTask=mt;let f=a.__symbol__("BLACK_LISTED_EVENTS"),g=a.__symbol__("UNPATCHED_EVENTS");n[g]&&(n[f]=n[g]),n[f]&&(a[f]=a[g]=n[f]),e.patchEventPrototype=bt,e.patchEventTarget=vt,e.isIEOrEdge=yt,e.ObjectDefineProperty=Me,e.ObjectGetOwnPropertyDescriptor=pe,e.ObjectCreate=_t,e.ArraySlice=Tt,e.patchClass=ye,e.wrapWithCurrentZone=Ve,e.filterProperties=lt,e.attachOriginToPatched=fe,e._redefineProperty=Object.defineProperty,e.patchCallbacks=Zt,e.getGlobalObjects=()=>({globalSources:ot,zoneSymbolEventNames:ne,eventNames:c,isBrowser:Ge,isMix:nt,isNode:De,TRUE_STR:ae,FALSE_STR:le,ZONE_SYMBOL_PREFIX:ve,ADD_EVENT_LISTENER_STR:je,REMOVE_EVENT_LISTENER_STR:He})})}function It(t){Ot(t),Nt(t),Lt(t)}var ut=dt();It(ut);St(ut);
diff --git a/electron/dist/frontend/browser/rdf-icon.png b/electron/dist/frontend/browser/rdf-icon.png
new file mode 100644
index 00000000..6926fe8f
Binary files /dev/null and b/electron/dist/frontend/browser/rdf-icon.png differ
diff --git a/electron/dist/frontend/browser/styles-C5RNEBXT.css b/electron/dist/frontend/browser/styles-C5RNEBXT.css
new file mode 100644
index 00000000..730193f4
--- /dev/null
+++ b/electron/dist/frontend/browser/styles-C5RNEBXT.css
@@ -0,0 +1 @@
+@charset "UTF-8";html{--mat-sys-background: #faf9fd;--mat-sys-error: #ba1a1a;--mat-sys-error-container: #ffdad6;--mat-sys-inverse-on-surface: #f2f0f4;--mat-sys-inverse-primary: #abc7ff;--mat-sys-inverse-surface: #2f3033;--mat-sys-on-background: #1a1b1f;--mat-sys-on-error: #ffffff;--mat-sys-on-error-container: #93000a;--mat-sys-on-primary: #ffffff;--mat-sys-on-primary-container: #00458f;--mat-sys-on-primary-fixed: #001b3f;--mat-sys-on-primary-fixed-variant: #00458f;--mat-sys-on-secondary: #ffffff;--mat-sys-on-secondary-container: #3e4759;--mat-sys-on-secondary-fixed: #131c2b;--mat-sys-on-secondary-fixed-variant: #3e4759;--mat-sys-on-surface: #1a1b1f;--mat-sys-on-surface-variant: #44474e;--mat-sys-on-tertiary: #ffffff;--mat-sys-on-tertiary-container: #0000ef;--mat-sys-on-tertiary-fixed: #00006e;--mat-sys-on-tertiary-fixed-variant: #0000ef;--mat-sys-outline: #74777f;--mat-sys-outline-variant: #c4c6d0;--mat-sys-primary: #005cbb;--mat-sys-primary-container: #d7e3ff;--mat-sys-primary-fixed: #d7e3ff;--mat-sys-primary-fixed-dim: #abc7ff;--mat-sys-scrim: #000000;--mat-sys-secondary: #565e71;--mat-sys-secondary-container: #dae2f9;--mat-sys-secondary-fixed: #dae2f9;--mat-sys-secondary-fixed-dim: #bec6dc;--mat-sys-shadow: #000000;--mat-sys-surface: #faf9fd;--mat-sys-surface-bright: #faf9fd;--mat-sys-surface-container: #efedf0;--mat-sys-surface-container-high: #e9e7eb;--mat-sys-surface-container-highest: #e3e2e6;--mat-sys-surface-container-low: #f4f3f6;--mat-sys-surface-container-lowest: #ffffff;--mat-sys-surface-dim: #dbd9dd;--mat-sys-surface-tint: #005cbb;--mat-sys-surface-variant: #e0e2ec;--mat-sys-tertiary: #343dff;--mat-sys-tertiary-container: #e0e0ff;--mat-sys-tertiary-fixed: #e0e0ff;--mat-sys-tertiary-fixed-dim: #bec2ff;--mat-sys-neutral-variant20: #2d3038;--mat-sys-neutral10: #1a1b1f}html{--mat-sys-level0: 0px 0px 0px 0px rgba(0, 0, 0, .2), 0px 0px 0px 0px rgba(0, 0, 0, .14), 0px 0px 0px 0px rgba(0, 0, 0, .12)}html{--mat-sys-level1: 0px 2px 1px -1px rgba(0, 0, 0, .2), 0px 1px 1px 0px rgba(0, 0, 0, .14), 0px 1px 3px 0px rgba(0, 0, 0, .12)}html{--mat-sys-level2: 0px 3px 3px -2px rgba(0, 0, 0, .2), 0px 3px 4px 0px rgba(0, 0, 0, .14), 0px 1px 8px 0px rgba(0, 0, 0, .12)}html{--mat-sys-level3: 0px 3px 5px -1px rgba(0, 0, 0, .2), 0px 6px 10px 0px rgba(0, 0, 0, .14), 0px 1px 18px 0px rgba(0, 0, 0, .12)}html{--mat-sys-level4: 0px 5px 5px -3px rgba(0, 0, 0, .2), 0px 8px 10px 1px rgba(0, 0, 0, .14), 0px 3px 14px 2px rgba(0, 0, 0, .12)}html{--mat-sys-level5: 0px 7px 8px -4px rgba(0, 0, 0, .2), 0px 12px 17px 2px rgba(0, 0, 0, .14), 0px 5px 22px 4px rgba(0, 0, 0, .12)}html{--mat-sys-body-large: 400 1rem / 1.5rem Roboto;--mat-sys-body-large-font: Roboto;--mat-sys-body-large-line-height: 1.5rem;--mat-sys-body-large-size: 1rem;--mat-sys-body-large-tracking: .031rem;--mat-sys-body-large-weight: 400;--mat-sys-body-medium: 400 .875rem / 1.25rem Roboto;--mat-sys-body-medium-font: Roboto;--mat-sys-body-medium-line-height: 1.25rem;--mat-sys-body-medium-size: .875rem;--mat-sys-body-medium-tracking: .016rem;--mat-sys-body-medium-weight: 400;--mat-sys-body-small: 400 .75rem / 1rem Roboto;--mat-sys-body-small-font: Roboto;--mat-sys-body-small-line-height: 1rem;--mat-sys-body-small-size: .75rem;--mat-sys-body-small-tracking: .025rem;--mat-sys-body-small-weight: 400;--mat-sys-display-large: 400 3.562rem / 4rem Roboto;--mat-sys-display-large-font: Roboto;--mat-sys-display-large-line-height: 4rem;--mat-sys-display-large-size: 3.562rem;--mat-sys-display-large-tracking: -.016rem;--mat-sys-display-large-weight: 400;--mat-sys-display-medium: 400 2.812rem / 3.25rem Roboto;--mat-sys-display-medium-font: Roboto;--mat-sys-display-medium-line-height: 3.25rem;--mat-sys-display-medium-size: 2.812rem;--mat-sys-display-medium-tracking: 0;--mat-sys-display-medium-weight: 400;--mat-sys-display-small: 400 2.25rem / 2.75rem Roboto;--mat-sys-display-small-font: Roboto;--mat-sys-display-small-line-height: 2.75rem;--mat-sys-display-small-size: 2.25rem;--mat-sys-display-small-tracking: 0;--mat-sys-display-small-weight: 400;--mat-sys-headline-large: 400 2rem / 2.5rem Roboto;--mat-sys-headline-large-font: Roboto;--mat-sys-headline-large-line-height: 2.5rem;--mat-sys-headline-large-size: 2rem;--mat-sys-headline-large-tracking: 0;--mat-sys-headline-large-weight: 400;--mat-sys-headline-medium: 400 1.75rem / 2.25rem Roboto;--mat-sys-headline-medium-font: Roboto;--mat-sys-headline-medium-line-height: 2.25rem;--mat-sys-headline-medium-size: 1.75rem;--mat-sys-headline-medium-tracking: 0;--mat-sys-headline-medium-weight: 400;--mat-sys-headline-small: 400 1.5rem / 2rem Roboto;--mat-sys-headline-small-font: Roboto;--mat-sys-headline-small-line-height: 2rem;--mat-sys-headline-small-size: 1.5rem;--mat-sys-headline-small-tracking: 0;--mat-sys-headline-small-weight: 400;--mat-sys-label-large: 500 .875rem / 1.25rem Roboto;--mat-sys-label-large-font: Roboto;--mat-sys-label-large-line-height: 1.25rem;--mat-sys-label-large-size: .875rem;--mat-sys-label-large-tracking: .006rem;--mat-sys-label-large-weight: 500;--mat-sys-label-large-weight-prominent: 700;--mat-sys-label-medium: 500 .75rem / 1rem Roboto;--mat-sys-label-medium-font: Roboto;--mat-sys-label-medium-line-height: 1rem;--mat-sys-label-medium-size: .75rem;--mat-sys-label-medium-tracking: .031rem;--mat-sys-label-medium-weight: 500;--mat-sys-label-medium-weight-prominent: 700;--mat-sys-label-small: 500 .688rem / 1rem Roboto;--mat-sys-label-small-font: Roboto;--mat-sys-label-small-line-height: 1rem;--mat-sys-label-small-size: .688rem;--mat-sys-label-small-tracking: .031rem;--mat-sys-label-small-weight: 500;--mat-sys-title-large: 400 1.375rem / 1.75rem Roboto;--mat-sys-title-large-font: Roboto;--mat-sys-title-large-line-height: 1.75rem;--mat-sys-title-large-size: 1.375rem;--mat-sys-title-large-tracking: 0;--mat-sys-title-large-weight: 400;--mat-sys-title-medium: 500 1rem / 1.5rem Roboto;--mat-sys-title-medium-font: Roboto;--mat-sys-title-medium-line-height: 1.5rem;--mat-sys-title-medium-size: 1rem;--mat-sys-title-medium-tracking: .009rem;--mat-sys-title-medium-weight: 500;--mat-sys-title-small: 500 .875rem / 1.25rem Roboto;--mat-sys-title-small-font: Roboto;--mat-sys-title-small-line-height: 1.25rem;--mat-sys-title-small-size: .875rem;--mat-sys-title-small-tracking: .006rem;--mat-sys-title-small-weight: 500}html{--mat-sys-corner-extra-large: 28px;--mat-sys-corner-extra-large-top: 28px 28px 0 0;--mat-sys-corner-extra-small: 4px;--mat-sys-corner-extra-small-top: 4px 4px 0 0;--mat-sys-corner-full: 9999px;--mat-sys-corner-large: 16px;--mat-sys-corner-large-end: 0 16px 16px 0;--mat-sys-corner-large-start: 16px 0 0 16px;--mat-sys-corner-large-top: 16px 16px 0 0;--mat-sys-corner-medium: 12px;--mat-sys-corner-none: 0;--mat-sys-corner-small: 8px}html{--mat-sys-dragged-state-layer-opacity: .16;--mat-sys-focus-state-layer-opacity: .12;--mat-sys-hover-state-layer-opacity: .08;--mat-sys-pressed-state-layer-opacity: .12}@layer properties;@layer theme,base,components,utilities;@layer theme{:root,:host{--font-sans: ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--font-mono: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--color-red-50: oklch(97.1% .013 17.38);--color-red-100: oklch(93.6% .032 17.717);--color-red-200: oklch(88.5% .062 18.334);--color-red-300: oklch(80.8% .114 19.571);--color-red-400: oklch(70.4% .191 22.216);--color-red-500: oklch(63.7% .237 25.331);--color-red-600: oklch(57.7% .245 27.325);--color-red-700: oklch(50.5% .213 27.518);--color-red-800: oklch(44.4% .177 26.899);--color-red-900: oklch(39.6% .141 25.723);--color-orange-600: oklch(64.6% .222 41.116);--color-orange-700: oklch(55.3% .195 38.402);--color-amber-50: oklch(98.7% .022 95.277);--color-amber-200: oklch(92.4% .12 95.746);--color-amber-700: oklch(55.5% .163 48.998);--color-green-50: oklch(98.2% .018 155.826);--color-green-100: oklch(96.2% .044 156.743);--color-green-200: oklch(92.5% .084 155.995);--color-green-400: oklch(79.2% .209 151.711);--color-green-500: oklch(72.3% .219 149.579);--color-green-600: oklch(62.7% .194 149.214);--color-green-700: oklch(52.7% .154 150.069);--color-green-800: oklch(44.8% .119 151.328);--color-green-900: oklch(39.3% .095 152.535);--color-blue-50: oklch(97% .014 254.604);--color-blue-100: oklch(93.2% .032 255.585);--color-blue-200: oklch(88.2% .059 254.128);--color-blue-300: oklch(80.9% .105 251.813);--color-blue-400: oklch(70.7% .165 254.624);--color-blue-500: oklch(62.3% .214 259.815);--color-blue-600: oklch(54.6% .245 262.881);--color-blue-700: oklch(48.8% .243 264.376);--color-blue-800: oklch(42.4% .199 265.638);--color-blue-900: oklch(37.9% .146 265.522);--color-indigo-500: oklch(58.5% .233 277.117);--color-indigo-600: oklch(51.1% .262 276.966);--color-indigo-700: oklch(45.7% .24 277.023);--color-purple-50: oklch(97.7% .014 308.299);--color-purple-100: oklch(94.6% .033 307.174);--color-purple-200: oklch(90.2% .063 306.703);--color-purple-600: oklch(55.8% .288 302.321);--color-purple-700: oklch(49.6% .265 301.924);--color-purple-800: oklch(43.8% .218 303.724);--color-purple-900: oklch(38.1% .176 304.987);--color-gray-50: oklch(98.5% .002 247.839);--color-gray-100: oklch(96.7% .003 264.542);--color-gray-200: oklch(92.8% .006 264.531);--color-gray-300: oklch(87.2% .01 258.338);--color-gray-400: oklch(70.7% .022 261.325);--color-gray-500: oklch(55.1% .027 264.364);--color-gray-600: oklch(44.6% .03 256.802);--color-gray-700: oklch(37.3% .034 259.733);--color-gray-800: oklch(27.8% .033 256.848);--color-gray-900: oklch(21% .034 264.665);--color-black: #000;--color-white: #fff;--spacing: .25rem;--container-xs: 20rem;--container-md: 28rem;--container-lg: 32rem;--container-5xl: 64rem;--text-xs: .75rem;--text-xs--line-height: calc(1 / .75);--text-sm: .875rem;--text-sm--line-height: calc(1.25 / .875);--text-lg: 1.125rem;--text-lg--line-height: calc(1.75 / 1.125);--text-xl: 1.25rem;--text-xl--line-height: calc(1.75 / 1.25);--text-2xl: 1.5rem;--text-2xl--line-height: calc(2 / 1.5);--font-weight-medium: 500;--font-weight-semibold: 600;--font-weight-bold: 700;--tracking-tight: -.025em;--tracking-wider: .05em;--leading-relaxed: 1.625;--radius-md: .375rem;--radius-lg: .5rem;--radius-xl: .75rem;--radius-2xl: 1rem;--ease-in: cubic-bezier(.4, 0, 1, 1);--ease-out: cubic-bezier(0, 0, .2, 1);--animate-spin: spin 1s linear infinite;--animate-pulse: pulse 2s cubic-bezier(.4, 0, .6, 1) infinite;--blur-sm: 8px;--blur-md: 12px;--default-transition-duration: .15s;--default-transition-timing-function: cubic-bezier(.4, 0, .2, 1);--default-font-family: var(--font-sans);--default-mono-font-family: var(--font-mono)}}@layer base{*,:after,:before,::backdrop,::file-selector-button{box-sizing:border-box;margin:0;padding:0;border:0 solid}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;tab-size:4;font-family:var(--default-font-family, ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings, normal);font-variation-settings:var(--default-font-variation-settings, normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family, ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings, normal);font-variation-settings:var(--default-mono-font-variation-settings, normal);font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea,::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;border-radius:0;background-color:transparent;opacity:1}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not (-webkit-appearance: -apple-pay-button)) or (contain-intrinsic-size: 1px){::placeholder{color:currentcolor;@supports (color: color-mix(in lab,red,red)){color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit,::-webkit-datetime-edit-year-field,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-minute-field,::-webkit-datetime-edit-second-field,::-webkit-datetime-edit-millisecond-field,::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]),::file-selector-button{appearance:button}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer utilities{.pointer-events-none{pointer-events:none}.invisible{visibility:hidden}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.sticky{position:sticky}.inset-0{inset:calc(var(--spacing) * 0)}.start{inset-inline-start:var(--spacing)}.end{inset-inline-end:var(--spacing)}.top-0{top:calc(var(--spacing) * 0)}.top-1\/2{top:50%}.top-4{top:calc(var(--spacing) * 4)}.right-0{right:calc(var(--spacing) * 0)}.right-3{right:calc(var(--spacing) * 3)}.right-4{right:calc(var(--spacing) * 4)}.left-3{left:calc(var(--spacing) * 3)}.z-10{z-index:10}.z-40{z-index:40}.z-50{z-index:50}.z-\[9999\]{z-index:9999}.m-0{margin:calc(var(--spacing) * 0)}.m-2{margin:calc(var(--spacing) * 2)}.mx-4{margin-inline:calc(var(--spacing) * 4)}.mx-auto{margin-inline:auto}.my-4\!{margin-block:calc(var(--spacing) * 4)!important}.mt-0\.5{margin-top:calc(var(--spacing) * .5)}.mt-1{margin-top:calc(var(--spacing) * 1)}.mt-1\.5{margin-top:calc(var(--spacing) * 1.5)}.mt-2{margin-top:calc(var(--spacing) * 2)}.mt-3{margin-top:calc(var(--spacing) * 3)}.mt-4{margin-top:calc(var(--spacing) * 4)}.mt-6{margin-top:calc(var(--spacing) * 6)}.mt-8{margin-top:calc(var(--spacing) * 8)}.mr-1{margin-right:calc(var(--spacing) * 1)}.mr-1\.5{margin-right:calc(var(--spacing) * 1.5)}.mr-2{margin-right:calc(var(--spacing) * 2)}.mb-1{margin-bottom:calc(var(--spacing) * 1)}.mb-2{margin-bottom:calc(var(--spacing) * 2)}.mb-3{margin-bottom:calc(var(--spacing) * 3)}.mb-4{margin-bottom:calc(var(--spacing) * 4)}.mb-6{margin-bottom:calc(var(--spacing) * 6)}.ml-1{margin-left:calc(var(--spacing) * 1)}.ml-2{margin-left:calc(var(--spacing) * 2)}.ml-2\!{margin-left:calc(var(--spacing) * 2)!important}.ml-3{margin-left:calc(var(--spacing) * 3)}.block{display:block}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-flex{display:inline-flex}.table{display:table}.h-1\.5{height:calc(var(--spacing) * 1.5)}.h-2{height:calc(var(--spacing) * 2)}.h-3{height:calc(var(--spacing) * 3)}.h-3\.5{height:calc(var(--spacing) * 3.5)}.h-4{height:calc(var(--spacing) * 4)}.h-5{height:calc(var(--spacing) * 5)}.h-6{height:calc(var(--spacing) * 6)}.h-8{height:calc(var(--spacing) * 8)}.h-10{height:calc(var(--spacing) * 10)}.h-12{height:calc(var(--spacing) * 12)}.h-16{height:calc(var(--spacing) * 16)}.h-20{height:calc(var(--spacing) * 20)}.h-\[500px\]{height:500px}.h-full{height:100%}.h-full\!{height:100%!important}.h-screen{height:100vh}.max-h-96{max-height:calc(var(--spacing) * 96)}.max-h-\[400px\]{max-height:400px}.max-h-\[600px\]{max-height:600px}.max-h-\[calc\(90vh-100px\)\]{max-height:calc(90vh - 100px)}.min-h-\[200px\]{min-height:200px}.w-1\.5{width:calc(var(--spacing) * 1.5)}.w-2{width:calc(var(--spacing) * 2)}.w-3{width:calc(var(--spacing) * 3)}.w-3\.5{width:calc(var(--spacing) * 3.5)}.w-4{width:calc(var(--spacing) * 4)}.w-5{width:calc(var(--spacing) * 5)}.w-6{width:calc(var(--spacing) * 6)}.w-8{width:calc(var(--spacing) * 8)}.w-10{width:calc(var(--spacing) * 10)}.w-12{width:calc(var(--spacing) * 12)}.w-16{width:calc(var(--spacing) * 16)}.w-20{width:calc(var(--spacing) * 20)}.w-56{width:calc(var(--spacing) * 56)}.w-64{width:calc(var(--spacing) * 64)}.w-80{width:calc(var(--spacing) * 80)}.w-96{width:calc(var(--spacing) * 96)}.w-200\!{width:calc(var(--spacing) * 200)!important}.w-\[35\%\]{width:35%}.w-\[85\%\]\!{width:85%!important}.w-fit{width:fit-content}.w-full{width:100%}.max-w-5xl{max-width:var(--container-5xl)}.max-w-\[70\%\]{max-width:70%}.max-w-\[120px\]{max-width:120px}.max-w-\[1200px\]{max-width:1200px}.max-w-full{max-width:100%}.max-w-lg{max-width:var(--container-lg)}.max-w-md{max-width:var(--container-md)}.max-w-xs{max-width:var(--container-xs)}.min-w-0{min-width:calc(var(--spacing) * 0)}.flex-1{flex:1}.flex-\[1\.5\]{flex:1.5}.flex-shrink-0,.shrink-0{flex-shrink:0}.table-fixed{table-layout:fixed}.-translate-y-1\/2{--tw-translate-y: -50% ;translate:var(--tw-translate-x) var(--tw-translate-y)}.rotate-180{rotate:180deg}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.animate-pulse{animation:var(--animate-pulse)}.animate-spin{animation:var(--animate-spin)}.cursor-default{cursor:default}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.cursor-pointer\!{cursor:pointer!important}.resize-none{resize:none}.resize-y{resize:vertical}.list-none{list-style-type:none}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.place-items-center{place-items:center}.items-center{align-items:center}.items-end{align-items:flex-end}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.gap-0\.5{gap:calc(var(--spacing) * .5)}.gap-1{gap:calc(var(--spacing) * 1)}.gap-1\.5{gap:calc(var(--spacing) * 1.5)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-2\!{gap:calc(var(--spacing) * 2)!important}.gap-3{gap:calc(var(--spacing) * 3)}.gap-3\!{gap:calc(var(--spacing) * 3)!important}.gap-4{gap:calc(var(--spacing) * 4)}.gap-4\!{gap:calc(var(--spacing) * 4)!important}.gap-6{gap:calc(var(--spacing) * 6)}.space-y-0\.5{:where(&>:not(:last-child)){--tw-space-y-reverse: 0;margin-block-start:calc(calc(var(--spacing) * .5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * .5) * calc(1 - var(--tw-space-y-reverse)))}}.space-y-1{:where(&>:not(:last-child)){--tw-space-y-reverse: 0;margin-block-start:calc(calc(var(--spacing) * 1) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 1) * calc(1 - var(--tw-space-y-reverse)))}}.space-y-2{:where(&>:not(:last-child)){--tw-space-y-reverse: 0;margin-block-start:calc(calc(var(--spacing) * 2) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-y-reverse)))}}.space-y-3{:where(&>:not(:last-child)){--tw-space-y-reverse: 0;margin-block-start:calc(calc(var(--spacing) * 3) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 3) * calc(1 - var(--tw-space-y-reverse)))}}.space-y-4{:where(&>:not(:last-child)){--tw-space-y-reverse: 0;margin-block-start:calc(calc(var(--spacing) * 4) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 4) * calc(1 - var(--tw-space-y-reverse)))}}.space-y-5{:where(&>:not(:last-child)){--tw-space-y-reverse: 0;margin-block-start:calc(calc(var(--spacing) * 5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 5) * calc(1 - var(--tw-space-y-reverse)))}}.space-y-6{:where(&>:not(:last-child)){--tw-space-y-reverse: 0;margin-block-start:calc(calc(var(--spacing) * 6) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 6) * calc(1 - var(--tw-space-y-reverse)))}}.divide-y{:where(&>:not(:last-child)){--tw-divide-y-reverse: 0;border-bottom-style:var(--tw-border-style);border-top-style:var(--tw-border-style);border-top-width:calc(1px * var(--tw-divide-y-reverse));border-bottom-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)))}}.divide-gray-200{:where(&>:not(:last-child)){border-color:var(--color-gray-200)}}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.overflow-y-scroll{overflow-y:scroll}.\!rounded-lg{border-radius:var(--radius-lg)!important}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:var(--radius-2xl)}.rounded-full{border-radius:calc(infinity * 1px)}.rounded-lg{border-radius:var(--radius-lg)}.rounded-md{border-radius:var(--radius-md)}.rounded-xl{border-radius:var(--radius-xl)}.rounded-t-2xl{border-top-left-radius:var(--radius-2xl);border-top-right-radius:var(--radius-2xl)}.border{border-style:var(--tw-border-style);border-width:1px}.border-2{border-style:var(--tw-border-style);border-width:2px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-t-2{border-top-style:var(--tw-border-style);border-top-width:2px}.border-r{border-right-style:var(--tw-border-style);border-right-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-l{border-left-style:var(--tw-border-style);border-left-width:1px}.border-l-3{border-left-style:var(--tw-border-style);border-left-width:3px}.border-l-4{border-left-style:var(--tw-border-style);border-left-width:4px}.\!border-none{--tw-border-style: none !important;border-style:none!important}.border-dashed{--tw-border-style: dashed;border-style:dashed}.border-none{--tw-border-style: none;border-style:none}.border-amber-200{border-color:var(--color-amber-200)}.border-blue-100{border-color:var(--color-blue-100)}.border-blue-200{border-color:var(--color-blue-200)}.border-blue-300{border-color:var(--color-blue-300)}.border-blue-400{border-color:var(--color-blue-400)}.border-blue-600{border-color:var(--color-blue-600)}.border-blue-700{border-color:var(--color-blue-700)}.border-gray-100{border-color:var(--color-gray-100)}.border-gray-200{border-color:var(--color-gray-200)}.border-gray-300{border-color:var(--color-gray-300)}.border-green-200{border-color:var(--color-green-200)}.border-green-400\/30{border-color:color-mix(in srgb,oklch(79.2% .209 151.711) 30%,transparent);@supports (color: color-mix(in lab,red,red)){border-color:color-mix(in oklab,var(--color-green-400) 30%,transparent)}}.border-purple-200{border-color:var(--color-purple-200)}.border-red-200{border-color:var(--color-red-200)}.border-red-300{border-color:var(--color-red-300)}.border-l-blue-500{border-left-color:var(--color-blue-500)}.border-l-green-500{border-left-color:var(--color-green-500)}.\!bg-gray-50{background-color:var(--color-gray-50)!important}.bg-amber-50{background-color:var(--color-amber-50)}.bg-black\/50{background-color:color-mix(in srgb,#000 50%,transparent);@supports (color: color-mix(in lab,red,red)){background-color:color-mix(in oklab,var(--color-black) 50%,transparent)}}.bg-blue-50{background-color:var(--color-blue-50)}.bg-blue-100{background-color:var(--color-blue-100)}.bg-blue-600{background-color:var(--color-blue-600)}.bg-gray-50{background-color:var(--color-gray-50)}.bg-gray-50\/50{background-color:color-mix(in srgb,oklch(98.5% .002 247.839) 50%,transparent);@supports (color: color-mix(in lab,red,red)){background-color:color-mix(in oklab,var(--color-gray-50) 50%,transparent)}}.bg-gray-100{background-color:var(--color-gray-100)}.bg-gray-200{background-color:var(--color-gray-200)}.bg-gray-400{background-color:var(--color-gray-400)}.bg-gray-900{background-color:var(--color-gray-900)}.bg-green-50{background-color:var(--color-green-50)}.bg-green-100{background-color:var(--color-green-100)}.bg-green-400{background-color:var(--color-green-400)}.bg-green-500{background-color:var(--color-green-500)}.bg-green-500\/20{background-color:color-mix(in srgb,oklch(72.3% .219 149.579) 20%,transparent);@supports (color: color-mix(in lab,red,red)){background-color:color-mix(in oklab,var(--color-green-500) 20%,transparent)}}.bg-green-600{background-color:var(--color-green-600)}.bg-indigo-600{background-color:var(--color-indigo-600)}.bg-orange-600{background-color:var(--color-orange-600)}.bg-purple-50{background-color:var(--color-purple-50)}.bg-purple-100{background-color:var(--color-purple-100)}.bg-purple-600{background-color:var(--color-purple-600)}.bg-red-50{background-color:var(--color-red-50)}.bg-red-100{background-color:var(--color-red-100)}.bg-red-500{background-color:var(--color-red-500)}.bg-red-600{background-color:var(--color-red-600)}.bg-transparent{background-color:transparent}.bg-white{background-color:var(--color-white)}.bg-white\/10{background-color:color-mix(in srgb,#fff 10%,transparent);@supports (color: color-mix(in lab,red,red)){background-color:color-mix(in oklab,var(--color-white) 10%,transparent)}}.bg-white\/20{background-color:color-mix(in srgb,#fff 20%,transparent);@supports (color: color-mix(in lab,red,red)){background-color:color-mix(in oklab,var(--color-white) 20%,transparent)}}.bg-gradient-to-br{--tw-gradient-position: to bottom right in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.bg-gradient-to-r{--tw-gradient-position: to right in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.from-blue-50{--tw-gradient-from: var(--color-blue-50);--tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-blue-500{--tw-gradient-from: var(--color-blue-500);--tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-blue-600{--tw-gradient-from: var(--color-blue-600);--tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-blue-900{--tw-gradient-from: var(--color-blue-900);--tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-gray-50{--tw-gradient-from: var(--color-gray-50);--tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-green-500{--tw-gradient-from: var(--color-green-500);--tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-red-500{--tw-gradient-from: var(--color-red-500);--tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-blue-100{--tw-gradient-to: var(--color-blue-100);--tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-blue-600{--tw-gradient-to: var(--color-blue-600);--tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-blue-700{--tw-gradient-to: var(--color-blue-700);--tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-gray-100{--tw-gradient-to: var(--color-gray-100);--tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-green-600{--tw-gradient-to: var(--color-green-600);--tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-red-600{--tw-gradient-to: var(--color-red-600);--tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-white{--tw-gradient-to: var(--color-white);--tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.p-0\!{padding:calc(var(--spacing) * 0)!important}.p-1{padding:calc(var(--spacing) * 1)}.p-1\!{padding:calc(var(--spacing) * 1)!important}.p-1\.5{padding:calc(var(--spacing) * 1.5)}.p-2{padding:calc(var(--spacing) * 2)}.p-2\!{padding:calc(var(--spacing) * 2)!important}.p-2\.5{padding:calc(var(--spacing) * 2.5)}.p-3{padding:calc(var(--spacing) * 3)}.p-3\!{padding:calc(var(--spacing) * 3)!important}.p-4{padding:calc(var(--spacing) * 4)}.p-5{padding:calc(var(--spacing) * 5)}.p-5\!{padding:calc(var(--spacing) * 5)!important}.p-6{padding:calc(var(--spacing) * 6)}.p-12{padding:calc(var(--spacing) * 12)}.\!px-3{padding-inline:calc(var(--spacing) * 3)!important}.px-1{padding-inline:calc(var(--spacing) * 1)}.px-1\.5{padding-inline:calc(var(--spacing) * 1.5)}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-2\.5{padding-inline:calc(var(--spacing) * 2.5)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-4{padding-inline:calc(var(--spacing) * 4)}.px-4\!{padding-inline:calc(var(--spacing) * 4)!important}.px-5{padding-inline:calc(var(--spacing) * 5)}.px-6{padding-inline:calc(var(--spacing) * 6)}.\!py-2{padding-block:calc(var(--spacing) * 2)!important}.py-0\.5{padding-block:calc(var(--spacing) * .5)}.py-1{padding-block:calc(var(--spacing) * 1)}.py-1\.5{padding-block:calc(var(--spacing) * 1.5)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-2\.5{padding-block:calc(var(--spacing) * 2.5)}.py-3{padding-block:calc(var(--spacing) * 3)}.py-3\!{padding-block:calc(var(--spacing) * 3)!important}.py-4{padding-block:calc(var(--spacing) * 4)}.py-5{padding-block:calc(var(--spacing) * 5)}.py-8{padding-block:calc(var(--spacing) * 8)}.py-12{padding-block:calc(var(--spacing) * 12)}.py-16{padding-block:calc(var(--spacing) * 16)}.pt-1{padding-top:calc(var(--spacing) * 1)}.pt-2{padding-top:calc(var(--spacing) * 2)}.pt-3{padding-top:calc(var(--spacing) * 3)}.pt-4{padding-top:calc(var(--spacing) * 4)}.pt-5{padding-top:calc(var(--spacing) * 5)}.pt-6{padding-top:calc(var(--spacing) * 6)}.pr-4{padding-right:calc(var(--spacing) * 4)}.pr-8{padding-right:calc(var(--spacing) * 8)}.pr-10{padding-right:calc(var(--spacing) * 10)}.pb-2{padding-bottom:calc(var(--spacing) * 2)}.pb-3{padding-bottom:calc(var(--spacing) * 3)}.pl-9{padding-left:calc(var(--spacing) * 9)}.pl-10{padding-left:calc(var(--spacing) * 10)}.text-center{text-align:center}.text-center\!{text-align:center!important}.text-left{text-align:left}.text-right{text-align:right}.font-mono{font-family:var(--font-mono)}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading, var(--text-2xl--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading, var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading, var(--text-sm--line-height))}.text-xl{font-size:var(--text-xl);line-height:var(--tw-leading, var(--text-xl--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading, var(--text-xs--line-height))}.leading-none{--tw-leading: 1;line-height:1}.leading-relaxed{--tw-leading: var(--leading-relaxed);line-height:var(--leading-relaxed)}.font-bold{--tw-font-weight: var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-medium{--tw-font-weight: var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-semibold{--tw-font-weight: var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-tight{--tw-tracking: var(--tracking-tight);letter-spacing:var(--tracking-tight)}.tracking-wider{--tw-tracking: var(--tracking-wider);letter-spacing:var(--tracking-wider)}.break-all{word-break:break-all}.whitespace-nowrap{white-space:nowrap}.whitespace-pre-wrap{white-space:pre-wrap}.text-amber-700{color:var(--color-amber-700)}.text-blue-100{color:var(--color-blue-100)}.text-blue-300{color:var(--color-blue-300)}.text-blue-400{color:var(--color-blue-400)}.text-blue-500{color:var(--color-blue-500)}.text-blue-600{color:var(--color-blue-600)}.text-blue-700{color:var(--color-blue-700)}.text-gray-300{color:var(--color-gray-300)}.text-gray-400{color:var(--color-gray-400)}.text-gray-500{color:var(--color-gray-500)}.text-gray-600{color:var(--color-gray-600)}.text-gray-700{color:var(--color-gray-700)}.text-gray-800{color:var(--color-gray-800)}.text-gray-900{color:var(--color-gray-900)}.text-green-600{color:var(--color-green-600)}.text-green-700{color:var(--color-green-700)}.text-purple-600{color:var(--color-purple-600)}.text-purple-700{color:var(--color-purple-700)}.text-purple-900{color:var(--color-purple-900)}.text-red-400{color:var(--color-red-400)}.text-red-500{color:var(--color-red-500)}.text-red-600{color:var(--color-red-600)}.text-red-700{color:var(--color-red-700)}.text-white{color:var(--color-white)}.text-white\/70{color:color-mix(in srgb,#fff 70%,transparent);@supports (color: color-mix(in lab,red,red)){color:color-mix(in oklab,var(--color-white) 70%,transparent)}}.uppercase{text-transform:uppercase}.italic{font-style:italic}.underline{text-decoration-line:underline}.placeholder-gray-400{&::placeholder{color:var(--color-gray-400)}}.opacity-0{opacity:0%}.opacity-25{opacity:25%}.opacity-50{opacity:50%}.opacity-70{opacity:70%}.opacity-75{opacity:75%}.\!shadow-none{--tw-shadow: 0 0 #0000 !important;box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)!important}.shadow-2xl{--tw-shadow: 0 25px 50px -12px var(--tw-shadow-color, rgb(0 0 0 / .25));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-lg{--tw-shadow: 0 10px 15px -3px var(--tw-shadow-color, rgb(0 0 0 / .1)), 0 4px 6px -4px var(--tw-shadow-color, rgb(0 0 0 / .1));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-md{--tw-shadow: 0 4px 6px -1px var(--tw-shadow-color, rgb(0 0 0 / .1)), 0 2px 4px -2px var(--tw-shadow-color, rgb(0 0 0 / .1));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-sm{--tw-shadow: 0 1px 3px 0 var(--tw-shadow-color, rgb(0 0 0 / .1)), 0 1px 2px -1px var(--tw-shadow-color, rgb(0 0 0 / .1));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-xl{--tw-shadow: 0 20px 25px -5px var(--tw-shadow-color, rgb(0 0 0 / .1)), 0 8px 10px -6px var(--tw-shadow-color, rgb(0 0 0 / .1));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.backdrop-blur-md{--tw-backdrop-blur: blur(var(--blur-md));-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.backdrop-blur-sm{--tw-backdrop-blur: blur(var(--blur-sm));-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease, var(--default-transition-timing-function));transition-duration:var(--tw-duration, var(--default-transition-duration))}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease, var(--default-transition-timing-function));transition-duration:var(--tw-duration, var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease, var(--default-transition-timing-function));transition-duration:var(--tw-duration, var(--default-transition-duration))}.transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease, var(--default-transition-timing-function));transition-duration:var(--tw-duration, var(--default-transition-duration))}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease, var(--default-transition-timing-function));transition-duration:var(--tw-duration, var(--default-transition-duration))}.duration-150{--tw-duration: .15s;transition-duration:.15s}.duration-200{--tw-duration: .2s;transition-duration:.2s}.duration-300{--tw-duration: .3s;transition-duration:.3s}.ease-in{--tw-ease: var(--ease-in);transition-timing-function:var(--ease-in)}.ease-out{--tw-ease: var(--ease-out);transition-timing-function:var(--ease-out)}.group-hover\:bg-blue-100{&:is(:where(.group):hover *){@media (hover: hover){background-color:var(--color-blue-100)}}}.group-hover\:text-blue-600{&:is(:where(.group):hover *){@media (hover: hover){color:var(--color-blue-600)}}}.group-hover\:text-gray-800{&:is(:where(.group):hover *){@media (hover: hover){color:var(--color-gray-800)}}}.group-hover\:text-gray-900{&:is(:where(.group):hover *){@media (hover: hover){color:var(--color-gray-900)}}}.group-hover\:opacity-100{&:is(:where(.group):hover *){@media (hover: hover){opacity:100%}}}.focus-within\:ring-2{&:focus-within{--tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}}.focus-within\:ring-blue-400{&:focus-within{--tw-ring-color: var(--color-blue-400)}}.hover\:scale-105{&:hover{@media (hover: hover){--tw-scale-x: 105%;--tw-scale-y: 105%;--tw-scale-z: 105%;scale:var(--tw-scale-x) var(--tw-scale-y)}}}.hover\:scale-110{&:hover{@media (hover: hover){--tw-scale-x: 110%;--tw-scale-y: 110%;--tw-scale-z: 110%;scale:var(--tw-scale-x) var(--tw-scale-y)}}}.hover\:border-blue-300{&:hover{@media (hover: hover){border-color:var(--color-blue-300)}}}.hover\:\!bg-gray-50{&:hover{@media (hover: hover){background-color:var(--color-gray-50)!important}}}.hover\:bg-blue-200{&:hover{@media (hover: hover){background-color:var(--color-blue-200)}}}.hover\:bg-blue-700{&:hover{@media (hover: hover){background-color:var(--color-blue-700)}}}.hover\:bg-gray-50{&:hover{@media (hover: hover){background-color:var(--color-gray-50)}}}.hover\:bg-gray-100{&:hover{@media (hover: hover){background-color:var(--color-gray-100)}}}.hover\:bg-gray-200{&:hover{@media (hover: hover){background-color:var(--color-gray-200)}}}.hover\:bg-green-700{&:hover{@media (hover: hover){background-color:var(--color-green-700)}}}.hover\:bg-indigo-700{&:hover{@media (hover: hover){background-color:var(--color-indigo-700)}}}.hover\:bg-orange-700{&:hover{@media (hover: hover){background-color:var(--color-orange-700)}}}.hover\:bg-purple-200{&:hover{@media (hover: hover){background-color:var(--color-purple-200)}}}.hover\:bg-purple-700{&:hover{@media (hover: hover){background-color:var(--color-purple-700)}}}.hover\:bg-red-50{&:hover{@media (hover: hover){background-color:var(--color-red-50)}}}.hover\:bg-red-100{&:hover{@media (hover: hover){background-color:var(--color-red-100)}}}.hover\:bg-red-700{&:hover{@media (hover: hover){background-color:var(--color-red-700)}}}.hover\:bg-white{&:hover{@media (hover: hover){background-color:var(--color-white)}}}.hover\:bg-white\/20{&:hover{@media (hover: hover){background-color:color-mix(in srgb,#fff 20%,transparent);@supports (color: color-mix(in lab,red,red)){background-color:color-mix(in oklab,var(--color-white) 20%,transparent)}}}}.hover\:bg-white\/30{&:hover{@media (hover: hover){background-color:color-mix(in srgb,#fff 30%,transparent);@supports (color: color-mix(in lab,red,red)){background-color:color-mix(in oklab,var(--color-white) 30%,transparent)}}}}.hover\:from-blue-600{&:hover{@media (hover: hover){--tw-gradient-from: var(--color-blue-600);--tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}}}.hover\:from-green-600{&:hover{@media (hover: hover){--tw-gradient-from: var(--color-green-600);--tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}}}.hover\:from-red-600{&:hover{@media (hover: hover){--tw-gradient-from: var(--color-red-600);--tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}}}.hover\:to-blue-700{&:hover{@media (hover: hover){--tw-gradient-to: var(--color-blue-700);--tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}}}.hover\:to-green-700{&:hover{@media (hover: hover){--tw-gradient-to: var(--color-green-700);--tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}}}.hover\:to-red-700{&:hover{@media (hover: hover){--tw-gradient-to: var(--color-red-700);--tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}}}.hover\:text-black{&:hover{@media (hover: hover){color:var(--color-black)}}}.hover\:text-blue-600{&:hover{@media (hover: hover){color:var(--color-blue-600)}}}.hover\:text-blue-700{&:hover{@media (hover: hover){color:var(--color-blue-700)}}}.hover\:text-blue-800{&:hover{@media (hover: hover){color:var(--color-blue-800)}}}.hover\:text-gray-600{&:hover{@media (hover: hover){color:var(--color-gray-600)}}}.hover\:text-gray-700{&:hover{@media (hover: hover){color:var(--color-gray-700)}}}.hover\:text-gray-900{&:hover{@media (hover: hover){color:var(--color-gray-900)}}}.hover\:text-purple-800{&:hover{@media (hover: hover){color:var(--color-purple-800)}}}.hover\:text-red-600{&:hover{@media (hover: hover){color:var(--color-red-600)}}}.hover\:text-red-800{&:hover{@media (hover: hover){color:var(--color-red-800)}}}.hover\:text-white{&:hover{@media (hover: hover){color:var(--color-white)}}}.hover\:shadow{&:hover{@media (hover: hover){--tw-shadow: 0 1px 3px 0 var(--tw-shadow-color, rgb(0 0 0 / .1)), 0 1px 2px -1px var(--tw-shadow-color, rgb(0 0 0 / .1));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}}}.hover\:shadow-lg{&:hover{@media (hover: hover){--tw-shadow: 0 10px 15px -3px var(--tw-shadow-color, rgb(0 0 0 / .1)), 0 4px 6px -4px var(--tw-shadow-color, rgb(0 0 0 / .1));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}}}.hover\:shadow-md{&:hover{@media (hover: hover){--tw-shadow: 0 4px 6px -1px var(--tw-shadow-color, rgb(0 0 0 / .1)), 0 2px 4px -2px var(--tw-shadow-color, rgb(0 0 0 / .1));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}}}.focus\:border-blue-500{&:focus{border-color:var(--color-blue-500)}}.focus\:border-gray-200{&:focus{border-color:var(--color-gray-200)}}.focus\:border-transparent{&:focus{border-color:transparent}}.focus\:ring-0{&:focus{--tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}}.focus\:ring-2{&:focus{--tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}}.focus\:ring-blue-200{&:focus{--tw-ring-color: var(--color-blue-200)}}.focus\:ring-blue-400{&:focus{--tw-ring-color: var(--color-blue-400)}}.focus\:ring-blue-500{&:focus{--tw-ring-color: var(--color-blue-500)}}.focus\:ring-indigo-500{&:focus{--tw-ring-color: var(--color-indigo-500)}}.focus\:outline-none{&:focus{--tw-outline-style: none;outline-style:none}}.disabled\:cursor-not-allowed{&:disabled{cursor:not-allowed}}.disabled\:opacity-40{&:disabled{opacity:40%}}.disabled\:opacity-50{&:disabled{opacity:50%}}.disabled\:hover\:scale-100{&:disabled{&:hover{@media (hover: hover){--tw-scale-x: 100%;--tw-scale-y: 100%;--tw-scale-z: 100%;scale:var(--tw-scale-x) var(--tw-scale-y)}}}}.sm\:hidden{@media (width >= 40rem){display:none}}.sm\:inline{@media (width >= 40rem){display:inline}}.sm\:w-auto{@media (width >= 40rem){width:auto}}.sm\:flex-row{@media (width >= 40rem){flex-direction:row}}.sm\:items-center{@media (width >= 40rem){align-items:center}}.sm\:justify-between{@media (width >= 40rem){justify-content:space-between}}.sm\:p-6{@media (width >= 40rem){padding:calc(var(--spacing) * 6)}}.md\:col-span-2{@media (width >= 48rem){grid-column:span 2 / span 2}}.md\:block{@media (width >= 48rem){display:block}}.md\:hidden{@media (width >= 48rem){display:none}}.md\:grid-cols-2{@media (width >= 48rem){grid-template-columns:repeat(2,minmax(0,1fr))}}.dark\:border-gray-600{@media (prefers-color-scheme: dark){border-color:var(--color-gray-600)}}.dark\:border-gray-700{@media (prefers-color-scheme: dark){border-color:var(--color-gray-700)}}.dark\:border-gray-800{@media (prefers-color-scheme: dark){border-color:var(--color-gray-800)}}.dark\:border-green-800{@media (prefers-color-scheme: dark){border-color:var(--color-green-800)}}.dark\:border-red-800{@media (prefers-color-scheme: dark){border-color:var(--color-red-800)}}.dark\:bg-gray-700{@media (prefers-color-scheme: dark){background-color:var(--color-gray-700)}}.dark\:bg-gray-800{@media (prefers-color-scheme: dark){background-color:var(--color-gray-800)}}.dark\:bg-gray-800\/30{@media (prefers-color-scheme: dark){background-color:color-mix(in srgb,oklch(27.8% .033 256.848) 30%,transparent);@supports (color: color-mix(in lab,red,red)){background-color:color-mix(in oklab,var(--color-gray-800) 30%,transparent)}}}.dark\:bg-gray-900{@media (prefers-color-scheme: dark){background-color:var(--color-gray-900)}}.dark\:bg-green-900\/20{@media (prefers-color-scheme: dark){background-color:color-mix(in srgb,oklch(39.3% .095 152.535) 20%,transparent);@supports (color: color-mix(in lab,red,red)){background-color:color-mix(in oklab,var(--color-green-900) 20%,transparent)}}}.dark\:bg-red-900\/20{@media (prefers-color-scheme: dark){background-color:color-mix(in srgb,oklch(39.6% .141 25.723) 20%,transparent);@supports (color: color-mix(in lab,red,red)){background-color:color-mix(in oklab,var(--color-red-900) 20%,transparent)}}}.dark\:bg-white{@media (prefers-color-scheme: dark){background-color:var(--color-white)}}.dark\:text-gray-100{@media (prefers-color-scheme: dark){color:var(--color-gray-100)}}.dark\:text-gray-200{@media (prefers-color-scheme: dark){color:var(--color-gray-200)}}.dark\:text-gray-400{@media (prefers-color-scheme: dark){color:var(--color-gray-400)}}.dark\:text-gray-600{@media (prefers-color-scheme: dark){color:var(--color-gray-600)}}.dark\:text-gray-900{@media (prefers-color-scheme: dark){color:var(--color-gray-900)}}.dark\:text-green-400{@media (prefers-color-scheme: dark){color:var(--color-green-400)}}.dark\:text-red-400{@media (prefers-color-scheme: dark){color:var(--color-red-400)}}.dark\:placeholder-gray-600{@media (prefers-color-scheme: dark){&::placeholder{color:var(--color-gray-600)}}}.dark\:hover\:bg-gray-700{@media (prefers-color-scheme: dark){&:hover{@media (hover: hover){background-color:var(--color-gray-700)}}}}.dark\:hover\:bg-gray-800{@media (prefers-color-scheme: dark){&:hover{@media (hover: hover){background-color:var(--color-gray-800)}}}}.dark\:hover\:text-gray-200{@media (prefers-color-scheme: dark){&:hover{@media (hover: hover){color:var(--color-gray-200)}}}}}@layer properties{@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x: 0;--tw-translate-y: 0;--tw-translate-z: 0;--tw-rotate-x: initial;--tw-rotate-y: initial;--tw-rotate-z: initial;--tw-skew-x: initial;--tw-skew-y: initial;--tw-space-y-reverse: 0;--tw-divide-y-reverse: 0;--tw-border-style: solid;--tw-gradient-position: initial;--tw-gradient-from: #0000;--tw-gradient-via: #0000;--tw-gradient-to: #0000;--tw-gradient-stops: initial;--tw-gradient-via-stops: initial;--tw-gradient-from-position: 0%;--tw-gradient-via-position: 50%;--tw-gradient-to-position: 100%;--tw-leading: initial;--tw-font-weight: initial;--tw-tracking: initial;--tw-shadow: 0 0 #0000;--tw-shadow-color: initial;--tw-shadow-alpha: 100%;--tw-inset-shadow: 0 0 #0000;--tw-inset-shadow-color: initial;--tw-inset-shadow-alpha: 100%;--tw-ring-color: initial;--tw-ring-shadow: 0 0 #0000;--tw-inset-ring-color: initial;--tw-inset-ring-shadow: 0 0 #0000;--tw-ring-inset: initial;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-offset-shadow: 0 0 #0000;--tw-blur: initial;--tw-brightness: initial;--tw-contrast: initial;--tw-grayscale: initial;--tw-hue-rotate: initial;--tw-invert: initial;--tw-opacity: initial;--tw-saturate: initial;--tw-sepia: initial;--tw-drop-shadow: initial;--tw-drop-shadow-color: initial;--tw-drop-shadow-alpha: 100%;--tw-drop-shadow-size: initial;--tw-backdrop-blur: initial;--tw-backdrop-brightness: initial;--tw-backdrop-contrast: initial;--tw-backdrop-grayscale: initial;--tw-backdrop-hue-rotate: initial;--tw-backdrop-invert: initial;--tw-backdrop-opacity: initial;--tw-backdrop-saturate: initial;--tw-backdrop-sepia: initial;--tw-duration: initial;--tw-ease: initial;--tw-scale-x: 1;--tw-scale-y: 1;--tw-scale-z: 1}}}@layer properties;@layer theme,base,components,utilities;@layer theme{:root,:host{--font-sans: ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--font-mono: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--color-red-50: oklch(97.1% .013 17.38);--color-red-100: oklch(93.6% .032 17.717);--color-red-200: oklch(88.5% .062 18.334);--color-red-300: oklch(80.8% .114 19.571);--color-red-400: oklch(70.4% .191 22.216);--color-red-500: oklch(63.7% .237 25.331);--color-red-600: oklch(57.7% .245 27.325);--color-red-700: oklch(50.5% .213 27.518);--color-red-800: oklch(44.4% .177 26.899);--color-red-900: oklch(39.6% .141 25.723);--color-orange-600: oklch(64.6% .222 41.116);--color-orange-700: oklch(55.3% .195 38.402);--color-amber-50: oklch(98.7% .022 95.277);--color-amber-200: oklch(92.4% .12 95.746);--color-amber-700: oklch(55.5% .163 48.998);--color-green-50: oklch(98.2% .018 155.826);--color-green-100: oklch(96.2% .044 156.743);--color-green-200: oklch(92.5% .084 155.995);--color-green-400: oklch(79.2% .209 151.711);--color-green-500: oklch(72.3% .219 149.579);--color-green-600: oklch(62.7% .194 149.214);--color-green-700: oklch(52.7% .154 150.069);--color-green-800: oklch(44.8% .119 151.328);--color-green-900: oklch(39.3% .095 152.535);--color-blue-50: oklch(97% .014 254.604);--color-blue-100: oklch(93.2% .032 255.585);--color-blue-200: oklch(88.2% .059 254.128);--color-blue-300: oklch(80.9% .105 251.813);--color-blue-400: oklch(70.7% .165 254.624);--color-blue-500: oklch(62.3% .214 259.815);--color-blue-600: oklch(54.6% .245 262.881);--color-blue-700: oklch(48.8% .243 264.376);--color-blue-800: oklch(42.4% .199 265.638);--color-blue-900: oklch(37.9% .146 265.522);--color-indigo-500: oklch(58.5% .233 277.117);--color-indigo-600: oklch(51.1% .262 276.966);--color-indigo-700: oklch(45.7% .24 277.023);--color-purple-50: oklch(97.7% .014 308.299);--color-purple-100: oklch(94.6% .033 307.174);--color-purple-200: oklch(90.2% .063 306.703);--color-purple-600: oklch(55.8% .288 302.321);--color-purple-700: oklch(49.6% .265 301.924);--color-purple-800: oklch(43.8% .218 303.724);--color-purple-900: oklch(38.1% .176 304.987);--color-gray-50: oklch(98.5% .002 247.839);--color-gray-100: oklch(96.7% .003 264.542);--color-gray-200: oklch(92.8% .006 264.531);--color-gray-300: oklch(87.2% .01 258.338);--color-gray-400: oklch(70.7% .022 261.325);--color-gray-500: oklch(55.1% .027 264.364);--color-gray-600: oklch(44.6% .03 256.802);--color-gray-700: oklch(37.3% .034 259.733);--color-gray-800: oklch(27.8% .033 256.848);--color-gray-900: oklch(21% .034 264.665);--color-black: #000;--color-white: #fff;--spacing: .25rem;--container-xs: 20rem;--container-md: 28rem;--container-lg: 32rem;--container-5xl: 64rem;--text-xs: .75rem;--text-xs--line-height: calc(1 / .75);--text-sm: .875rem;--text-sm--line-height: calc(1.25 / .875);--text-lg: 1.125rem;--text-lg--line-height: calc(1.75 / 1.125);--text-xl: 1.25rem;--text-xl--line-height: calc(1.75 / 1.25);--text-2xl: 1.5rem;--text-2xl--line-height: calc(2 / 1.5);--font-weight-medium: 500;--font-weight-semibold: 600;--font-weight-bold: 700;--tracking-tight: -.025em;--tracking-wider: .05em;--leading-relaxed: 1.625;--radius-md: .375rem;--radius-lg: .5rem;--radius-xl: .75rem;--radius-2xl: 1rem;--ease-in: cubic-bezier(.4, 0, 1, 1);--ease-out: cubic-bezier(0, 0, .2, 1);--animate-spin: spin 1s linear infinite;--animate-pulse: pulse 2s cubic-bezier(.4, 0, .6, 1) infinite;--blur-sm: 8px;--blur-md: 12px;--default-transition-duration: .15s;--default-transition-timing-function: cubic-bezier(.4, 0, .2, 1);--default-font-family: var(--font-sans);--default-mono-font-family: var(--font-mono)}}@layer base{*,:after,:before,::backdrop,::file-selector-button{box-sizing:border-box;margin:0;padding:0;border:0 solid}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;tab-size:4;font-family:var(--default-font-family, ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings, normal);font-variation-settings:var(--default-font-variation-settings, normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family, ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings, normal);font-variation-settings:var(--default-mono-font-variation-settings, normal);font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea,::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;border-radius:0;background-color:transparent;opacity:1}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not (-webkit-appearance: -apple-pay-button)) or (contain-intrinsic-size: 1px){::placeholder{color:currentcolor;@supports (color: color-mix(in lab,red,red)){color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit,::-webkit-datetime-edit-year-field,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-minute-field,::-webkit-datetime-edit-second-field,::-webkit-datetime-edit-millisecond-field,::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]),::file-selector-button{appearance:button}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer utilities{.pointer-events-none{pointer-events:none}.invisible{visibility:hidden}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.sticky{position:sticky}.inset-0{inset:calc(var(--spacing) * 0)}.start{inset-inline-start:var(--spacing)}.end{inset-inline-end:var(--spacing)}.top-0{top:calc(var(--spacing) * 0)}.top-1\/2{top:50%}.top-4{top:calc(var(--spacing) * 4)}.right-0{right:calc(var(--spacing) * 0)}.right-3{right:calc(var(--spacing) * 3)}.right-4{right:calc(var(--spacing) * 4)}.left-3{left:calc(var(--spacing) * 3)}.z-10{z-index:10}.z-40{z-index:40}.z-50{z-index:50}.z-\[9999\]{z-index:9999}.m-0{margin:calc(var(--spacing) * 0)}.m-2{margin:calc(var(--spacing) * 2)}.mx-4{margin-inline:calc(var(--spacing) * 4)}.mx-auto{margin-inline:auto}.my-4\!{margin-block:calc(var(--spacing) * 4)!important}.mt-0\.5{margin-top:calc(var(--spacing) * .5)}.mt-1{margin-top:calc(var(--spacing) * 1)}.mt-1\.5{margin-top:calc(var(--spacing) * 1.5)}.mt-2{margin-top:calc(var(--spacing) * 2)}.mt-3{margin-top:calc(var(--spacing) * 3)}.mt-4{margin-top:calc(var(--spacing) * 4)}.mt-6{margin-top:calc(var(--spacing) * 6)}.mt-8{margin-top:calc(var(--spacing) * 8)}.mr-1{margin-right:calc(var(--spacing) * 1)}.mr-1\.5{margin-right:calc(var(--spacing) * 1.5)}.mr-2{margin-right:calc(var(--spacing) * 2)}.mb-1{margin-bottom:calc(var(--spacing) * 1)}.mb-2{margin-bottom:calc(var(--spacing) * 2)}.mb-3{margin-bottom:calc(var(--spacing) * 3)}.mb-4{margin-bottom:calc(var(--spacing) * 4)}.mb-6{margin-bottom:calc(var(--spacing) * 6)}.ml-1{margin-left:calc(var(--spacing) * 1)}.ml-2{margin-left:calc(var(--spacing) * 2)}.ml-2\!{margin-left:calc(var(--spacing) * 2)!important}.ml-3{margin-left:calc(var(--spacing) * 3)}.block{display:block}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-flex{display:inline-flex}.table{display:table}.h-1\.5{height:calc(var(--spacing) * 1.5)}.h-2{height:calc(var(--spacing) * 2)}.h-3{height:calc(var(--spacing) * 3)}.h-3\.5{height:calc(var(--spacing) * 3.5)}.h-4{height:calc(var(--spacing) * 4)}.h-5{height:calc(var(--spacing) * 5)}.h-6{height:calc(var(--spacing) * 6)}.h-8{height:calc(var(--spacing) * 8)}.h-10{height:calc(var(--spacing) * 10)}.h-12{height:calc(var(--spacing) * 12)}.h-16{height:calc(var(--spacing) * 16)}.h-20{height:calc(var(--spacing) * 20)}.h-\[500px\]{height:500px}.h-full{height:100%}.h-full\!{height:100%!important}.h-screen{height:100vh}.max-h-96{max-height:calc(var(--spacing) * 96)}.max-h-\[400px\]{max-height:400px}.max-h-\[600px\]{max-height:600px}.max-h-\[calc\(90vh-100px\)\]{max-height:calc(90vh - 100px)}.min-h-\[200px\]{min-height:200px}.w-1\.5{width:calc(var(--spacing) * 1.5)}.w-2{width:calc(var(--spacing) * 2)}.w-3{width:calc(var(--spacing) * 3)}.w-3\.5{width:calc(var(--spacing) * 3.5)}.w-4{width:calc(var(--spacing) * 4)}.w-5{width:calc(var(--spacing) * 5)}.w-6{width:calc(var(--spacing) * 6)}.w-8{width:calc(var(--spacing) * 8)}.w-10{width:calc(var(--spacing) * 10)}.w-12{width:calc(var(--spacing) * 12)}.w-16{width:calc(var(--spacing) * 16)}.w-20{width:calc(var(--spacing) * 20)}.w-56{width:calc(var(--spacing) * 56)}.w-64{width:calc(var(--spacing) * 64)}.w-80{width:calc(var(--spacing) * 80)}.w-96{width:calc(var(--spacing) * 96)}.w-200\!{width:calc(var(--spacing) * 200)!important}.w-\[35\%\]{width:35%}.w-\[85\%\]\!{width:85%!important}.w-fit{width:fit-content}.w-full{width:100%}.max-w-5xl{max-width:var(--container-5xl)}.max-w-\[70\%\]{max-width:70%}.max-w-\[120px\]{max-width:120px}.max-w-\[1200px\]{max-width:1200px}.max-w-full{max-width:100%}.max-w-lg{max-width:var(--container-lg)}.max-w-md{max-width:var(--container-md)}.max-w-xs{max-width:var(--container-xs)}.min-w-0{min-width:calc(var(--spacing) * 0)}.flex-1{flex:1}.flex-\[1\.5\]{flex:1.5}.flex-shrink-0,.shrink-0{flex-shrink:0}.table-fixed{table-layout:fixed}.-translate-y-1\/2{--tw-translate-y: -50% ;translate:var(--tw-translate-x) var(--tw-translate-y)}.rotate-180{rotate:180deg}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.animate-pulse{animation:var(--animate-pulse)}.animate-spin{animation:var(--animate-spin)}.cursor-default{cursor:default}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.cursor-pointer\!{cursor:pointer!important}.resize-none{resize:none}.resize-y{resize:vertical}.list-none{list-style-type:none}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.place-items-center{place-items:center}.items-center{align-items:center}.items-end{align-items:flex-end}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.gap-0\.5{gap:calc(var(--spacing) * .5)}.gap-1{gap:calc(var(--spacing) * 1)}.gap-1\.5{gap:calc(var(--spacing) * 1.5)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-2\!{gap:calc(var(--spacing) * 2)!important}.gap-3{gap:calc(var(--spacing) * 3)}.gap-3\!{gap:calc(var(--spacing) * 3)!important}.gap-4{gap:calc(var(--spacing) * 4)}.gap-4\!{gap:calc(var(--spacing) * 4)!important}.gap-6{gap:calc(var(--spacing) * 6)}.space-y-0\.5{:where(&>:not(:last-child)){--tw-space-y-reverse: 0;margin-block-start:calc(calc(var(--spacing) * .5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * .5) * calc(1 - var(--tw-space-y-reverse)))}}.space-y-1{:where(&>:not(:last-child)){--tw-space-y-reverse: 0;margin-block-start:calc(calc(var(--spacing) * 1) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 1) * calc(1 - var(--tw-space-y-reverse)))}}.space-y-2{:where(&>:not(:last-child)){--tw-space-y-reverse: 0;margin-block-start:calc(calc(var(--spacing) * 2) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-y-reverse)))}}.space-y-3{:where(&>:not(:last-child)){--tw-space-y-reverse: 0;margin-block-start:calc(calc(var(--spacing) * 3) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 3) * calc(1 - var(--tw-space-y-reverse)))}}.space-y-4{:where(&>:not(:last-child)){--tw-space-y-reverse: 0;margin-block-start:calc(calc(var(--spacing) * 4) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 4) * calc(1 - var(--tw-space-y-reverse)))}}.space-y-5{:where(&>:not(:last-child)){--tw-space-y-reverse: 0;margin-block-start:calc(calc(var(--spacing) * 5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 5) * calc(1 - var(--tw-space-y-reverse)))}}.space-y-6{:where(&>:not(:last-child)){--tw-space-y-reverse: 0;margin-block-start:calc(calc(var(--spacing) * 6) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 6) * calc(1 - var(--tw-space-y-reverse)))}}.divide-y{:where(&>:not(:last-child)){--tw-divide-y-reverse: 0;border-bottom-style:var(--tw-border-style);border-top-style:var(--tw-border-style);border-top-width:calc(1px * var(--tw-divide-y-reverse));border-bottom-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)))}}.divide-gray-200{:where(&>:not(:last-child)){border-color:var(--color-gray-200)}}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.overflow-y-scroll{overflow-y:scroll}.\!rounded-lg{border-radius:var(--radius-lg)!important}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:var(--radius-2xl)}.rounded-full{border-radius:calc(infinity * 1px)}.rounded-lg{border-radius:var(--radius-lg)}.rounded-md{border-radius:var(--radius-md)}.rounded-xl{border-radius:var(--radius-xl)}.rounded-t-2xl{border-top-left-radius:var(--radius-2xl);border-top-right-radius:var(--radius-2xl)}.border{border-style:var(--tw-border-style);border-width:1px}.border-2{border-style:var(--tw-border-style);border-width:2px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-t-2{border-top-style:var(--tw-border-style);border-top-width:2px}.border-r{border-right-style:var(--tw-border-style);border-right-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-l{border-left-style:var(--tw-border-style);border-left-width:1px}.border-l-3{border-left-style:var(--tw-border-style);border-left-width:3px}.border-l-4{border-left-style:var(--tw-border-style);border-left-width:4px}.\!border-none{--tw-border-style: none !important;border-style:none!important}.border-dashed{--tw-border-style: dashed;border-style:dashed}.border-none{--tw-border-style: none;border-style:none}.border-amber-200{border-color:var(--color-amber-200)}.border-blue-100{border-color:var(--color-blue-100)}.border-blue-200{border-color:var(--color-blue-200)}.border-blue-300{border-color:var(--color-blue-300)}.border-blue-400{border-color:var(--color-blue-400)}.border-blue-600{border-color:var(--color-blue-600)}.border-blue-700{border-color:var(--color-blue-700)}.border-gray-100{border-color:var(--color-gray-100)}.border-gray-200{border-color:var(--color-gray-200)}.border-gray-300{border-color:var(--color-gray-300)}.border-green-200{border-color:var(--color-green-200)}.border-green-400\/30{border-color:color-mix(in srgb,oklch(79.2% .209 151.711) 30%,transparent);@supports (color: color-mix(in lab,red,red)){border-color:color-mix(in oklab,var(--color-green-400) 30%,transparent)}}.border-purple-200{border-color:var(--color-purple-200)}.border-red-200{border-color:var(--color-red-200)}.border-red-300{border-color:var(--color-red-300)}.border-l-blue-500{border-left-color:var(--color-blue-500)}.border-l-green-500{border-left-color:var(--color-green-500)}.\!bg-gray-50{background-color:var(--color-gray-50)!important}.bg-amber-50{background-color:var(--color-amber-50)}.bg-black\/50{background-color:color-mix(in srgb,#000 50%,transparent);@supports (color: color-mix(in lab,red,red)){background-color:color-mix(in oklab,var(--color-black) 50%,transparent)}}.bg-blue-50{background-color:var(--color-blue-50)}.bg-blue-100{background-color:var(--color-blue-100)}.bg-blue-600{background-color:var(--color-blue-600)}.bg-gray-50{background-color:var(--color-gray-50)}.bg-gray-50\/50{background-color:color-mix(in srgb,oklch(98.5% .002 247.839) 50%,transparent);@supports (color: color-mix(in lab,red,red)){background-color:color-mix(in oklab,var(--color-gray-50) 50%,transparent)}}.bg-gray-100{background-color:var(--color-gray-100)}.bg-gray-200{background-color:var(--color-gray-200)}.bg-gray-400{background-color:var(--color-gray-400)}.bg-gray-900{background-color:var(--color-gray-900)}.bg-green-50{background-color:var(--color-green-50)}.bg-green-100{background-color:var(--color-green-100)}.bg-green-400{background-color:var(--color-green-400)}.bg-green-500{background-color:var(--color-green-500)}.bg-green-500\/20{background-color:color-mix(in srgb,oklch(72.3% .219 149.579) 20%,transparent);@supports (color: color-mix(in lab,red,red)){background-color:color-mix(in oklab,var(--color-green-500) 20%,transparent)}}.bg-green-600{background-color:var(--color-green-600)}.bg-indigo-600{background-color:var(--color-indigo-600)}.bg-orange-600{background-color:var(--color-orange-600)}.bg-purple-50{background-color:var(--color-purple-50)}.bg-purple-100{background-color:var(--color-purple-100)}.bg-purple-600{background-color:var(--color-purple-600)}.bg-red-50{background-color:var(--color-red-50)}.bg-red-100{background-color:var(--color-red-100)}.bg-red-500{background-color:var(--color-red-500)}.bg-red-600{background-color:var(--color-red-600)}.bg-transparent{background-color:transparent}.bg-white{background-color:var(--color-white)}.bg-white\/10{background-color:color-mix(in srgb,#fff 10%,transparent);@supports (color: color-mix(in lab,red,red)){background-color:color-mix(in oklab,var(--color-white) 10%,transparent)}}.bg-white\/20{background-color:color-mix(in srgb,#fff 20%,transparent);@supports (color: color-mix(in lab,red,red)){background-color:color-mix(in oklab,var(--color-white) 20%,transparent)}}.bg-gradient-to-br{--tw-gradient-position: to bottom right in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.bg-gradient-to-r{--tw-gradient-position: to right in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.from-blue-50{--tw-gradient-from: var(--color-blue-50);--tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-blue-500{--tw-gradient-from: var(--color-blue-500);--tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-blue-600{--tw-gradient-from: var(--color-blue-600);--tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-blue-900{--tw-gradient-from: var(--color-blue-900);--tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-gray-50{--tw-gradient-from: var(--color-gray-50);--tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-green-500{--tw-gradient-from: var(--color-green-500);--tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-red-500{--tw-gradient-from: var(--color-red-500);--tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-blue-100{--tw-gradient-to: var(--color-blue-100);--tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-blue-600{--tw-gradient-to: var(--color-blue-600);--tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-blue-700{--tw-gradient-to: var(--color-blue-700);--tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-gray-100{--tw-gradient-to: var(--color-gray-100);--tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-green-600{--tw-gradient-to: var(--color-green-600);--tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-red-600{--tw-gradient-to: var(--color-red-600);--tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-white{--tw-gradient-to: var(--color-white);--tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.p-0\!{padding:calc(var(--spacing) * 0)!important}.p-1{padding:calc(var(--spacing) * 1)}.p-1\!{padding:calc(var(--spacing) * 1)!important}.p-1\.5{padding:calc(var(--spacing) * 1.5)}.p-2{padding:calc(var(--spacing) * 2)}.p-2\!{padding:calc(var(--spacing) * 2)!important}.p-2\.5{padding:calc(var(--spacing) * 2.5)}.p-3{padding:calc(var(--spacing) * 3)}.p-3\!{padding:calc(var(--spacing) * 3)!important}.p-4{padding:calc(var(--spacing) * 4)}.p-5{padding:calc(var(--spacing) * 5)}.p-5\!{padding:calc(var(--spacing) * 5)!important}.p-6{padding:calc(var(--spacing) * 6)}.p-12{padding:calc(var(--spacing) * 12)}.\!px-3{padding-inline:calc(var(--spacing) * 3)!important}.px-1{padding-inline:calc(var(--spacing) * 1)}.px-1\.5{padding-inline:calc(var(--spacing) * 1.5)}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-2\.5{padding-inline:calc(var(--spacing) * 2.5)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-4{padding-inline:calc(var(--spacing) * 4)}.px-4\!{padding-inline:calc(var(--spacing) * 4)!important}.px-5{padding-inline:calc(var(--spacing) * 5)}.px-6{padding-inline:calc(var(--spacing) * 6)}.\!py-2{padding-block:calc(var(--spacing) * 2)!important}.py-0\.5{padding-block:calc(var(--spacing) * .5)}.py-1{padding-block:calc(var(--spacing) * 1)}.py-1\.5{padding-block:calc(var(--spacing) * 1.5)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-2\.5{padding-block:calc(var(--spacing) * 2.5)}.py-3{padding-block:calc(var(--spacing) * 3)}.py-3\!{padding-block:calc(var(--spacing) * 3)!important}.py-4{padding-block:calc(var(--spacing) * 4)}.py-5{padding-block:calc(var(--spacing) * 5)}.py-8{padding-block:calc(var(--spacing) * 8)}.py-12{padding-block:calc(var(--spacing) * 12)}.py-16{padding-block:calc(var(--spacing) * 16)}.pt-1{padding-top:calc(var(--spacing) * 1)}.pt-2{padding-top:calc(var(--spacing) * 2)}.pt-3{padding-top:calc(var(--spacing) * 3)}.pt-4{padding-top:calc(var(--spacing) * 4)}.pt-5{padding-top:calc(var(--spacing) * 5)}.pt-6{padding-top:calc(var(--spacing) * 6)}.pr-4{padding-right:calc(var(--spacing) * 4)}.pr-8{padding-right:calc(var(--spacing) * 8)}.pr-10{padding-right:calc(var(--spacing) * 10)}.pb-2{padding-bottom:calc(var(--spacing) * 2)}.pb-3{padding-bottom:calc(var(--spacing) * 3)}.pl-9{padding-left:calc(var(--spacing) * 9)}.pl-10{padding-left:calc(var(--spacing) * 10)}.text-center{text-align:center}.text-center\!{text-align:center!important}.text-left{text-align:left}.text-right{text-align:right}.font-mono{font-family:var(--font-mono)}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading, var(--text-2xl--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading, var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading, var(--text-sm--line-height))}.text-xl{font-size:var(--text-xl);line-height:var(--tw-leading, var(--text-xl--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading, var(--text-xs--line-height))}.leading-none{--tw-leading: 1;line-height:1}.leading-relaxed{--tw-leading: var(--leading-relaxed);line-height:var(--leading-relaxed)}.font-bold{--tw-font-weight: var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-medium{--tw-font-weight: var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-semibold{--tw-font-weight: var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-tight{--tw-tracking: var(--tracking-tight);letter-spacing:var(--tracking-tight)}.tracking-wider{--tw-tracking: var(--tracking-wider);letter-spacing:var(--tracking-wider)}.break-all{word-break:break-all}.whitespace-nowrap{white-space:nowrap}.whitespace-pre-wrap{white-space:pre-wrap}.text-amber-700{color:var(--color-amber-700)}.text-blue-100{color:var(--color-blue-100)}.text-blue-300{color:var(--color-blue-300)}.text-blue-400{color:var(--color-blue-400)}.text-blue-500{color:var(--color-blue-500)}.text-blue-600{color:var(--color-blue-600)}.text-blue-700{color:var(--color-blue-700)}.text-gray-300{color:var(--color-gray-300)}.text-gray-400{color:var(--color-gray-400)}.text-gray-500{color:var(--color-gray-500)}.text-gray-600{color:var(--color-gray-600)}.text-gray-700{color:var(--color-gray-700)}.text-gray-800{color:var(--color-gray-800)}.text-gray-900{color:var(--color-gray-900)}.text-green-600{color:var(--color-green-600)}.text-green-700{color:var(--color-green-700)}.text-purple-600{color:var(--color-purple-600)}.text-purple-700{color:var(--color-purple-700)}.text-purple-900{color:var(--color-purple-900)}.text-red-400{color:var(--color-red-400)}.text-red-500{color:var(--color-red-500)}.text-red-600{color:var(--color-red-600)}.text-red-700{color:var(--color-red-700)}.text-white{color:var(--color-white)}.text-white\/70{color:color-mix(in srgb,#fff 70%,transparent);@supports (color: color-mix(in lab,red,red)){color:color-mix(in oklab,var(--color-white) 70%,transparent)}}.uppercase{text-transform:uppercase}.italic{font-style:italic}.underline{text-decoration-line:underline}.placeholder-gray-400{&::placeholder{color:var(--color-gray-400)}}.opacity-0{opacity:0%}.opacity-25{opacity:25%}.opacity-50{opacity:50%}.opacity-70{opacity:70%}.opacity-75{opacity:75%}.\!shadow-none{--tw-shadow: 0 0 #0000 !important;box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)!important}.shadow-2xl{--tw-shadow: 0 25px 50px -12px var(--tw-shadow-color, rgb(0 0 0 / .25));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-lg{--tw-shadow: 0 10px 15px -3px var(--tw-shadow-color, rgb(0 0 0 / .1)), 0 4px 6px -4px var(--tw-shadow-color, rgb(0 0 0 / .1));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-md{--tw-shadow: 0 4px 6px -1px var(--tw-shadow-color, rgb(0 0 0 / .1)), 0 2px 4px -2px var(--tw-shadow-color, rgb(0 0 0 / .1));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-sm{--tw-shadow: 0 1px 3px 0 var(--tw-shadow-color, rgb(0 0 0 / .1)), 0 1px 2px -1px var(--tw-shadow-color, rgb(0 0 0 / .1));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-xl{--tw-shadow: 0 20px 25px -5px var(--tw-shadow-color, rgb(0 0 0 / .1)), 0 8px 10px -6px var(--tw-shadow-color, rgb(0 0 0 / .1));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.backdrop-blur-md{--tw-backdrop-blur: blur(var(--blur-md));-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.backdrop-blur-sm{--tw-backdrop-blur: blur(var(--blur-sm));-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease, var(--default-transition-timing-function));transition-duration:var(--tw-duration, var(--default-transition-duration))}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease, var(--default-transition-timing-function));transition-duration:var(--tw-duration, var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease, var(--default-transition-timing-function));transition-duration:var(--tw-duration, var(--default-transition-duration))}.transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease, var(--default-transition-timing-function));transition-duration:var(--tw-duration, var(--default-transition-duration))}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease, var(--default-transition-timing-function));transition-duration:var(--tw-duration, var(--default-transition-duration))}.duration-150{--tw-duration: .15s;transition-duration:.15s}.duration-200{--tw-duration: .2s;transition-duration:.2s}.duration-300{--tw-duration: .3s;transition-duration:.3s}.ease-in{--tw-ease: var(--ease-in);transition-timing-function:var(--ease-in)}.ease-out{--tw-ease: var(--ease-out);transition-timing-function:var(--ease-out)}.group-hover\:bg-blue-100{&:is(:where(.group):hover *){@media (hover: hover){background-color:var(--color-blue-100)}}}.group-hover\:text-blue-600{&:is(:where(.group):hover *){@media (hover: hover){color:var(--color-blue-600)}}}.group-hover\:text-gray-800{&:is(:where(.group):hover *){@media (hover: hover){color:var(--color-gray-800)}}}.group-hover\:text-gray-900{&:is(:where(.group):hover *){@media (hover: hover){color:var(--color-gray-900)}}}.group-hover\:opacity-100{&:is(:where(.group):hover *){@media (hover: hover){opacity:100%}}}.focus-within\:ring-2{&:focus-within{--tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}}.focus-within\:ring-blue-400{&:focus-within{--tw-ring-color: var(--color-blue-400)}}.hover\:scale-105{&:hover{@media (hover: hover){--tw-scale-x: 105%;--tw-scale-y: 105%;--tw-scale-z: 105%;scale:var(--tw-scale-x) var(--tw-scale-y)}}}.hover\:scale-110{&:hover{@media (hover: hover){--tw-scale-x: 110%;--tw-scale-y: 110%;--tw-scale-z: 110%;scale:var(--tw-scale-x) var(--tw-scale-y)}}}.hover\:border-blue-300{&:hover{@media (hover: hover){border-color:var(--color-blue-300)}}}.hover\:\!bg-gray-50{&:hover{@media (hover: hover){background-color:var(--color-gray-50)!important}}}.hover\:bg-blue-200{&:hover{@media (hover: hover){background-color:var(--color-blue-200)}}}.hover\:bg-blue-700{&:hover{@media (hover: hover){background-color:var(--color-blue-700)}}}.hover\:bg-gray-50{&:hover{@media (hover: hover){background-color:var(--color-gray-50)}}}.hover\:bg-gray-100{&:hover{@media (hover: hover){background-color:var(--color-gray-100)}}}.hover\:bg-gray-200{&:hover{@media (hover: hover){background-color:var(--color-gray-200)}}}.hover\:bg-green-700{&:hover{@media (hover: hover){background-color:var(--color-green-700)}}}.hover\:bg-indigo-700{&:hover{@media (hover: hover){background-color:var(--color-indigo-700)}}}.hover\:bg-orange-700{&:hover{@media (hover: hover){background-color:var(--color-orange-700)}}}.hover\:bg-purple-200{&:hover{@media (hover: hover){background-color:var(--color-purple-200)}}}.hover\:bg-purple-700{&:hover{@media (hover: hover){background-color:var(--color-purple-700)}}}.hover\:bg-red-50{&:hover{@media (hover: hover){background-color:var(--color-red-50)}}}.hover\:bg-red-100{&:hover{@media (hover: hover){background-color:var(--color-red-100)}}}.hover\:bg-red-700{&:hover{@media (hover: hover){background-color:var(--color-red-700)}}}.hover\:bg-white{&:hover{@media (hover: hover){background-color:var(--color-white)}}}.hover\:bg-white\/20{&:hover{@media (hover: hover){background-color:color-mix(in srgb,#fff 20%,transparent);@supports (color: color-mix(in lab,red,red)){background-color:color-mix(in oklab,var(--color-white) 20%,transparent)}}}}.hover\:bg-white\/30{&:hover{@media (hover: hover){background-color:color-mix(in srgb,#fff 30%,transparent);@supports (color: color-mix(in lab,red,red)){background-color:color-mix(in oklab,var(--color-white) 30%,transparent)}}}}.hover\:from-blue-600{&:hover{@media (hover: hover){--tw-gradient-from: var(--color-blue-600);--tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}}}.hover\:from-green-600{&:hover{@media (hover: hover){--tw-gradient-from: var(--color-green-600);--tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}}}.hover\:from-red-600{&:hover{@media (hover: hover){--tw-gradient-from: var(--color-red-600);--tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}}}.hover\:to-blue-700{&:hover{@media (hover: hover){--tw-gradient-to: var(--color-blue-700);--tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}}}.hover\:to-green-700{&:hover{@media (hover: hover){--tw-gradient-to: var(--color-green-700);--tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}}}.hover\:to-red-700{&:hover{@media (hover: hover){--tw-gradient-to: var(--color-red-700);--tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}}}.hover\:text-black{&:hover{@media (hover: hover){color:var(--color-black)}}}.hover\:text-blue-600{&:hover{@media (hover: hover){color:var(--color-blue-600)}}}.hover\:text-blue-700{&:hover{@media (hover: hover){color:var(--color-blue-700)}}}.hover\:text-blue-800{&:hover{@media (hover: hover){color:var(--color-blue-800)}}}.hover\:text-gray-600{&:hover{@media (hover: hover){color:var(--color-gray-600)}}}.hover\:text-gray-700{&:hover{@media (hover: hover){color:var(--color-gray-700)}}}.hover\:text-gray-900{&:hover{@media (hover: hover){color:var(--color-gray-900)}}}.hover\:text-purple-800{&:hover{@media (hover: hover){color:var(--color-purple-800)}}}.hover\:text-red-600{&:hover{@media (hover: hover){color:var(--color-red-600)}}}.hover\:text-red-800{&:hover{@media (hover: hover){color:var(--color-red-800)}}}.hover\:text-white{&:hover{@media (hover: hover){color:var(--color-white)}}}.hover\:shadow{&:hover{@media (hover: hover){--tw-shadow: 0 1px 3px 0 var(--tw-shadow-color, rgb(0 0 0 / .1)), 0 1px 2px -1px var(--tw-shadow-color, rgb(0 0 0 / .1));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}}}.hover\:shadow-lg{&:hover{@media (hover: hover){--tw-shadow: 0 10px 15px -3px var(--tw-shadow-color, rgb(0 0 0 / .1)), 0 4px 6px -4px var(--tw-shadow-color, rgb(0 0 0 / .1));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}}}.hover\:shadow-md{&:hover{@media (hover: hover){--tw-shadow: 0 4px 6px -1px var(--tw-shadow-color, rgb(0 0 0 / .1)), 0 2px 4px -2px var(--tw-shadow-color, rgb(0 0 0 / .1));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}}}.focus\:border-blue-500{&:focus{border-color:var(--color-blue-500)}}.focus\:border-gray-200{&:focus{border-color:var(--color-gray-200)}}.focus\:border-transparent{&:focus{border-color:transparent}}.focus\:ring-0{&:focus{--tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}}.focus\:ring-2{&:focus{--tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}}.focus\:ring-blue-200{&:focus{--tw-ring-color: var(--color-blue-200)}}.focus\:ring-blue-400{&:focus{--tw-ring-color: var(--color-blue-400)}}.focus\:ring-blue-500{&:focus{--tw-ring-color: var(--color-blue-500)}}.focus\:ring-indigo-500{&:focus{--tw-ring-color: var(--color-indigo-500)}}.focus\:outline-none{&:focus{--tw-outline-style: none;outline-style:none}}.disabled\:cursor-not-allowed{&:disabled{cursor:not-allowed}}.disabled\:opacity-40{&:disabled{opacity:40%}}.disabled\:opacity-50{&:disabled{opacity:50%}}.disabled\:hover\:scale-100{&:disabled{&:hover{@media (hover: hover){--tw-scale-x: 100%;--tw-scale-y: 100%;--tw-scale-z: 100%;scale:var(--tw-scale-x) var(--tw-scale-y)}}}}.sm\:hidden{@media (width >= 40rem){display:none}}.sm\:inline{@media (width >= 40rem){display:inline}}.sm\:w-auto{@media (width >= 40rem){width:auto}}.sm\:flex-row{@media (width >= 40rem){flex-direction:row}}.sm\:items-center{@media (width >= 40rem){align-items:center}}.sm\:justify-between{@media (width >= 40rem){justify-content:space-between}}.sm\:p-6{@media (width >= 40rem){padding:calc(var(--spacing) * 6)}}.md\:col-span-2{@media (width >= 48rem){grid-column:span 2 / span 2}}.md\:block{@media (width >= 48rem){display:block}}.md\:hidden{@media (width >= 48rem){display:none}}.md\:grid-cols-2{@media (width >= 48rem){grid-template-columns:repeat(2,minmax(0,1fr))}}.dark\:border-gray-600{@media (prefers-color-scheme: dark){border-color:var(--color-gray-600)}}.dark\:border-gray-700{@media (prefers-color-scheme: dark){border-color:var(--color-gray-700)}}.dark\:border-gray-800{@media (prefers-color-scheme: dark){border-color:var(--color-gray-800)}}.dark\:border-green-800{@media (prefers-color-scheme: dark){border-color:var(--color-green-800)}}.dark\:border-red-800{@media (prefers-color-scheme: dark){border-color:var(--color-red-800)}}.dark\:bg-gray-700{@media (prefers-color-scheme: dark){background-color:var(--color-gray-700)}}.dark\:bg-gray-800{@media (prefers-color-scheme: dark){background-color:var(--color-gray-800)}}.dark\:bg-gray-800\/30{@media (prefers-color-scheme: dark){background-color:color-mix(in srgb,oklch(27.8% .033 256.848) 30%,transparent);@supports (color: color-mix(in lab,red,red)){background-color:color-mix(in oklab,var(--color-gray-800) 30%,transparent)}}}.dark\:bg-gray-900{@media (prefers-color-scheme: dark){background-color:var(--color-gray-900)}}.dark\:bg-green-900\/20{@media (prefers-color-scheme: dark){background-color:color-mix(in srgb,oklch(39.3% .095 152.535) 20%,transparent);@supports (color: color-mix(in lab,red,red)){background-color:color-mix(in oklab,var(--color-green-900) 20%,transparent)}}}.dark\:bg-red-900\/20{@media (prefers-color-scheme: dark){background-color:color-mix(in srgb,oklch(39.6% .141 25.723) 20%,transparent);@supports (color: color-mix(in lab,red,red)){background-color:color-mix(in oklab,var(--color-red-900) 20%,transparent)}}}.dark\:bg-white{@media (prefers-color-scheme: dark){background-color:var(--color-white)}}.dark\:text-gray-100{@media (prefers-color-scheme: dark){color:var(--color-gray-100)}}.dark\:text-gray-200{@media (prefers-color-scheme: dark){color:var(--color-gray-200)}}.dark\:text-gray-400{@media (prefers-color-scheme: dark){color:var(--color-gray-400)}}.dark\:text-gray-600{@media (prefers-color-scheme: dark){color:var(--color-gray-600)}}.dark\:text-gray-900{@media (prefers-color-scheme: dark){color:var(--color-gray-900)}}.dark\:text-green-400{@media (prefers-color-scheme: dark){color:var(--color-green-400)}}.dark\:text-red-400{@media (prefers-color-scheme: dark){color:var(--color-red-400)}}.dark\:placeholder-gray-600{@media (prefers-color-scheme: dark){&::placeholder{color:var(--color-gray-600)}}}.dark\:hover\:bg-gray-700{@media (prefers-color-scheme: dark){&:hover{@media (hover: hover){background-color:var(--color-gray-700)}}}}.dark\:hover\:bg-gray-800{@media (prefers-color-scheme: dark){&:hover{@media (hover: hover){background-color:var(--color-gray-800)}}}}.dark\:hover\:text-gray-200{@media (prefers-color-scheme: dark){&:hover{@media (hover: hover){color:var(--color-gray-200)}}}}}html,body{height:100%}body{margin:0;font-family:Roboto,Helvetica Neue,sans-serif}.snackbar-success .mdc-snackbar__surface{background-color:#16a34a!important;color:#fff!important}.snackbar-error .mdc-snackbar__surface{background-color:#dc2626!important;color:#fff!important}@property --tw-translate-x{syntax: "*"; inherits: false; initial-value: 0;}@property --tw-translate-y{syntax: "*"; inherits: false; initial-value: 0;}@property --tw-translate-z{syntax: "*"; inherits: false; initial-value: 0;}@property --tw-rotate-x{syntax: "*"; inherits: false;}@property --tw-rotate-y{syntax: "*"; inherits: false;}@property --tw-rotate-z{syntax: "*"; inherits: false;}@property --tw-skew-x{syntax: "*"; inherits: false;}@property --tw-skew-y{syntax: "*"; inherits: false;}@property --tw-space-y-reverse{syntax: "*"; inherits: false; initial-value: 0;}@property --tw-divide-y-reverse{syntax: "*"; inherits: false; initial-value: 0;}@property --tw-border-style{syntax: "*"; inherits: false; initial-value: solid;}@property --tw-gradient-position{syntax: "*"; inherits: false;}@property --tw-gradient-from{syntax: ""; inherits: false; initial-value: #0000;}@property --tw-gradient-via{syntax: ""; inherits: false; initial-value: #0000;}@property --tw-gradient-to{syntax: ""; inherits: false; initial-value: #0000;}@property --tw-gradient-stops{syntax: "*"; inherits: false;}@property --tw-gradient-via-stops{syntax: "*"; inherits: false;}@property --tw-gradient-from-position{syntax: ""; inherits: false; initial-value: 0%;}@property --tw-gradient-via-position{syntax: ""; inherits: false; initial-value: 50%;}@property --tw-gradient-to-position{syntax: ""; inherits: false; initial-value: 100%;}@property --tw-leading{syntax: "*"; inherits: false;}@property --tw-font-weight{syntax: "*"; inherits: false;}@property --tw-tracking{syntax: "*"; inherits: false;}@property --tw-shadow{syntax: "*"; inherits: false; initial-value: 0 0 #0000;}@property --tw-shadow-color{syntax: "*"; inherits: false;}@property --tw-shadow-alpha{syntax: ""; inherits: false; initial-value: 100%;}@property --tw-inset-shadow{syntax: "*"; inherits: false; initial-value: 0 0 #0000;}@property --tw-inset-shadow-color{syntax: "*"; inherits: false;}@property --tw-inset-shadow-alpha{syntax: ""; inherits: false; initial-value: 100%;}@property --tw-ring-color{syntax: "*"; inherits: false;}@property --tw-ring-shadow{syntax: "*"; inherits: false; initial-value: 0 0 #0000;}@property --tw-inset-ring-color{syntax: "*"; inherits: false;}@property --tw-inset-ring-shadow{syntax: "*"; inherits: false; initial-value: 0 0 #0000;}@property --tw-ring-inset{syntax: "*"; inherits: false;}@property --tw-ring-offset-width{syntax: ""; inherits: false; initial-value: 0px;}@property --tw-ring-offset-color{syntax: "*"; inherits: false; initial-value: #fff;}@property --tw-ring-offset-shadow{syntax: "*"; inherits: false; initial-value: 0 0 #0000;}@property --tw-blur{syntax: "*"; inherits: false;}@property --tw-brightness{syntax: "*"; inherits: false;}@property --tw-contrast{syntax: "*"; inherits: false;}@property --tw-grayscale{syntax: "*"; inherits: false;}@property --tw-hue-rotate{syntax: "*"; inherits: false;}@property --tw-invert{syntax: "*"; inherits: false;}@property --tw-opacity{syntax: "*"; inherits: false;}@property --tw-saturate{syntax: "*"; inherits: false;}@property --tw-sepia{syntax: "*"; inherits: false;}@property --tw-drop-shadow{syntax: "*"; inherits: false;}@property --tw-drop-shadow-color{syntax: "*"; inherits: false;}@property --tw-drop-shadow-alpha{syntax: ""; inherits: false; initial-value: 100%;}@property --tw-drop-shadow-size{syntax: "*"; inherits: false;}@property --tw-backdrop-blur{syntax: "*"; inherits: false;}@property --tw-backdrop-brightness{syntax: "*"; inherits: false;}@property --tw-backdrop-contrast{syntax: "*"; inherits: false;}@property --tw-backdrop-grayscale{syntax: "*"; inherits: false;}@property --tw-backdrop-hue-rotate{syntax: "*"; inherits: false;}@property --tw-backdrop-invert{syntax: "*"; inherits: false;}@property --tw-backdrop-opacity{syntax: "*"; inherits: false;}@property --tw-backdrop-saturate{syntax: "*"; inherits: false;}@property --tw-backdrop-sepia{syntax: "*"; inherits: false;}@property --tw-duration{syntax: "*"; inherits: false;}@property --tw-ease{syntax: "*"; inherits: false;}@property --tw-scale-x{syntax: "*"; inherits: false; initial-value: 1;}@property --tw-scale-y{syntax: "*"; inherits: false; initial-value: 1;}@property --tw-scale-z{syntax: "*"; inherits: false; initial-value: 1;}@keyframes spin{to{transform:rotate(360deg)}}@keyframes pulse{50%{opacity:.5}}@layer properties{@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x: 0;--tw-translate-y: 0;--tw-translate-z: 0;--tw-rotate-x: initial;--tw-rotate-y: initial;--tw-rotate-z: initial;--tw-skew-x: initial;--tw-skew-y: initial;--tw-space-y-reverse: 0;--tw-divide-y-reverse: 0;--tw-border-style: solid;--tw-gradient-position: initial;--tw-gradient-from: #0000;--tw-gradient-via: #0000;--tw-gradient-to: #0000;--tw-gradient-stops: initial;--tw-gradient-via-stops: initial;--tw-gradient-from-position: 0%;--tw-gradient-via-position: 50%;--tw-gradient-to-position: 100%;--tw-leading: initial;--tw-font-weight: initial;--tw-tracking: initial;--tw-shadow: 0 0 #0000;--tw-shadow-color: initial;--tw-shadow-alpha: 100%;--tw-inset-shadow: 0 0 #0000;--tw-inset-shadow-color: initial;--tw-inset-shadow-alpha: 100%;--tw-ring-color: initial;--tw-ring-shadow: 0 0 #0000;--tw-inset-ring-color: initial;--tw-inset-ring-shadow: 0 0 #0000;--tw-ring-inset: initial;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-offset-shadow: 0 0 #0000;--tw-blur: initial;--tw-brightness: initial;--tw-contrast: initial;--tw-grayscale: initial;--tw-hue-rotate: initial;--tw-invert: initial;--tw-opacity: initial;--tw-saturate: initial;--tw-sepia: initial;--tw-drop-shadow: initial;--tw-drop-shadow-color: initial;--tw-drop-shadow-alpha: 100%;--tw-drop-shadow-size: initial;--tw-backdrop-blur: initial;--tw-backdrop-brightness: initial;--tw-backdrop-contrast: initial;--tw-backdrop-grayscale: initial;--tw-backdrop-hue-rotate: initial;--tw-backdrop-invert: initial;--tw-backdrop-opacity: initial;--tw-backdrop-saturate: initial;--tw-backdrop-sepia: initial;--tw-duration: initial;--tw-ease: initial;--tw-scale-x: 1;--tw-scale-y: 1;--tw-scale-z: 1}}}
diff --git a/electron/dist/frontend/prerendered-routes.json b/electron/dist/frontend/prerendered-routes.json
new file mode 100644
index 00000000..32265415
--- /dev/null
+++ b/electron/dist/frontend/prerendered-routes.json
@@ -0,0 +1,3 @@
+{
+ "routes": {}
+}
\ No newline at end of file
diff --git a/electron/electron-preload.js b/electron/electron-preload.js
index 92d192ff..866f307e 100644
--- a/electron/electron-preload.js
+++ b/electron/electron-preload.js
@@ -22,5 +22,8 @@ contextBridge.exposeInMainWorld('electronAPI', {
},
// ✅ NEW FEATURE
- selectFile: () => ipcRenderer.invoke('select-file')
+ selectFile: () => ipcRenderer.invoke('select-file'),
+
+ saveFile: (data, suggestedName) => ipcRenderer.invoke('save-file', data, suggestedName),
+
});
\ No newline at end of file
diff --git a/electron/main.js b/electron/main.js
index 1bfe54ed..082c0294 100644
--- a/electron/main.js
+++ b/electron/main.js
@@ -1,28 +1,60 @@
// electron/main.js
const { app, BrowserWindow, shell, ipcMain, dialog } = require('electron');
-const { spawn } = require('child_process');
+const { spawn, execSync } = require('child_process');
+const findProcess = require('find-process').default;
const path = require('path');
const http = require('http');
let mainWindow;
let backendProcess;
+const userDataPath = app.getPath('userData');
+
+async function killExistingBackendOnPort(port) {
+ const list = await findProcess('port', port);
+ for (const p of list) {
+ try { process.kill(p.pid, 'SIGKILL'); } catch (e) {}
+ }
+}
+
+
+function killExistingBackendOnPort(port) {
+ try {
+ const pid = execSync(`lsof -ti :${port}`).toString().trim();
+ if (pid) {
+ console.log(`[Electron] Port ${port} déjà utilisé par PID ${pid}, arrêt...`);
+ execSync(`kill -9 ${pid}`);
+ }
+ } catch (e) {
+ console.log(`[Electron] Aucun process existant sur le port ${port} (ou lsof indisponible).`);
+ }
+}
// ─────────────────────────────────────────────
-// 1. DÉMARRAGE DU BACKEND SPRING BOOT
+// 1. Starting the backend Server SPRING BOOT
// ─────────────────────────────────────────────
-function startBackend() {
+async function startBackend() {
+ await killExistingBackendOnPort(8080);
// __dirname = Projet-RDF-App_V1/electron/
// On remonte d'un niveau pour atteindre la racine du projet
const projectRoot = path.join(__dirname, '..');
- const jarPath = path.join(projectRoot, 'RDF_Back', 'target', 'RDF_Back-0.0.1-SNAPSHOT.jar');
+ const jarPath = app.isPackaged
+ ? path.join(process.resourcesPath, 'Backend-0.0.1-SNAPSHOT.jar')
+ : path.join(projectRoot, 'Backend', 'target', 'Backend-0.0.1-SNAPSHOT.jar');
+
+ const backendCwd = app.isPackaged
+ ? process.resourcesPath
+ : path.join(projectRoot, 'Backend');
console.log('[Electron] Chemin JAR :', jarPath);
console.log('[Electron] Démarrage du backend Spring Boot...');
+ console.log('[Electron] Backend cwd :', backendCwd);
+
backendProcess = spawn('java', ['-jar', jarPath], {
- cwd: path.join(projectRoot, 'RDF_Back'),
- stdio: 'pipe'
+ cwd: backendCwd,
+ stdio: 'pipe',
+ env: { ...process.env, FIELD_ARCHIVE_DATA: userDataPath }
});
backendProcess.stdout.on('data', (data) => {
@@ -82,24 +114,28 @@ function createWindow() {
contextIsolation: true,
nodeIntegration: false,
preload: path.join(__dirname, 'electron-preload.js'),
- webSecurity: false // ⚠️ allows file:// access
+ webSecurity: false // allows file:// access
}
});
// app.isPackaged = false en dev, true en production buildée
- // Pas besoin de définir NODE_ENV manuellement
const isDev = !app.isPackaged;
+ const indexPath = app.isPackaged
+ ? path.join(process.resourcesPath, 'frontend', 'browser', 'index.html')
+ : path.join(__dirname, 'dist', 'frontend', 'browser', 'index.html');
+
if (isDev) {
- // MODE DEV : Angular doit tourner sur ng serve (port 4200)
+ // MODE DEV : ng serve (port 4200)
console.log('[Electron] Mode développement — chargement depuis http://localhost:4200');
mainWindow.loadURL('http://localhost:4200');
mainWindow.webContents.openDevTools();
} else {
// MODE PROD : charger le build Angular statique
- const indexPath = path.join(__dirname, 'dist', 'frontend', 'browser', 'index.html');
console.log('[Electron] Mode production — chargement depuis', indexPath);
mainWindow.loadFile(indexPath);
+
+ //mainWindow.webContents.openDevTools();
}
// Ouvrir les liens externes dans le navigateur système
@@ -126,7 +162,32 @@ ipcMain.handle('select-file', async () => {
return null;
}
- return result.filePaths[0]; // ✅ FULL DESKTOP PATH
+ return result.filePaths[0];
+});
+
+// ─────────────────────────────────────────────
+// 5b. IPC - FILE EXPORT (SAVE)
+// ─────────────────────────────────────────────
+
+ipcMain.handle('save-file', async (event, data, suggestedName) => {
+ const win = BrowserWindow.fromWebContents(event.sender);
+
+ const { canceled, filePath } = await dialog.showSaveDialog(win, {
+ defaultPath: suggestedName,
+ filters: [{ name: 'Turtle', extensions: ['ttl'] }],
+ });
+
+ if (canceled || !filePath) {
+ return { success: false, canceled: true };
+ }
+
+ try {
+ const fs = require('fs');
+ fs.writeFileSync(filePath, Buffer.from(data));
+ return { success: true, filePath };
+ } catch (err) {
+ return { success: false, error: err.message };
+ }
});
// ─────────────────────────────────────────────
@@ -135,7 +196,7 @@ ipcMain.handle('select-file', async () => {
app.whenReady().then(async () => {
try {
- startBackend();
+ await startBackend();
console.log('[Electron] Attente du démarrage du backend...');
await waitForBackend('http://localhost:8080/api/datasources');
@@ -163,7 +224,10 @@ app.on('activate', () => {
app.on('before-quit', () => {
if (backendProcess) {
- console.log('[Electron] Arrêt du backend...');
- backendProcess.kill();
+ if (process.platform === 'win32') {
+ execSync(`taskkill /pid ${backendProcess.pid} /f /t`);
+ } else {
+ backendProcess.kill('SIGTERM');
+ }
}
});
diff --git a/electron/package-electron.json b/electron/package-electron.json
deleted file mode 100644
index d00e4004..00000000
--- a/electron/package-electron.json
+++ /dev/null
@@ -1,57 +0,0 @@
-{
- "name": "projet-rdf-electron",
- "version": "1.0.0",
- "description": "Application desktop RDF — Angular + Spring Boot + Electron",
- "main": "electron/main.js",
- "scripts": {
- "electron": "electron .",
- "electron:dev": "NODE_ENV=development electron .",
- "build:frontend": "cd Frontend && ng build --output-path ../electron/dist/frontend",
- "build:backend": "cd RDF_Back && mvn clean package -DskipTests",
- "build:all": "npm run build:frontend && npm run build:backend",
- "start": "npm run build:all && electron .",
- "package": "npm run build:all && electron-builder --dir",
- "dist": "npm run build:all && electron-builder"
- },
- "build": {
- "appId": "com.uspn.projet-rdf",
- "productName": "Gestionnaire RDF",
- "directories": {
- "output": "dist-electron"
- },
- "files": [
- "electron/**/*",
- "node_modules/**/*"
- ],
- "extraResources": [
- {
- "from": "RDF_Back/target/RDF_Back-0.0.1-SNAPSHOT.jar",
- "to": "RDF_Back/target/RDF_Back-0.0.1-SNAPSHOT.jar"
- },
- {
- "from": "data",
- "to": "data"
- },
- {
- "from": "projects",
- "to": "projects"
- }
- ],
- "win": {
- "target": "nsis",
- "icon": "electron/assets/icon.ico"
- },
- "mac": {
- "target": "dmg",
- "icon": "electron/assets/icon.icns"
- },
- "linux": {
- "target": "AppImage",
- "icon": "electron/assets/icon.png"
- }
- },
- "devDependencies": {
- "electron": "^29.0.0",
- "electron-builder": "^24.0.0"
- }
-}
diff --git a/package-lock.json b/package-lock.json
index 0e679c4e..e886a8a9 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -7,6 +7,9 @@
"": {
"name": "projet-rdf-electron",
"version": "1.0.0",
+ "dependencies": {
+ "find-process": "^2.1.1"
+ },
"devDependencies": {
"electron": "^29.0.0",
"electron-builder": "^24.0.0"
@@ -598,18 +601,6 @@
"undici-types": "~6.21.0"
}
},
- "node_modules/@types/plist": {
- "version": "3.0.5",
- "resolved": "https://registry.npmjs.org/@types/plist/-/plist-3.0.5.tgz",
- "integrity": "sha512-E6OCaRmAe4WDmWNsL/9RMqdkkzDCY1etutkflWk4c+AcjDU07Pcz1fQwTX0TQz+Pxqn9i4L1TU3UFpjnrcDgxA==",
- "dev": true,
- "license": "MIT",
- "optional": true,
- "dependencies": {
- "@types/node": "*",
- "xmlbuilder": ">=11.0.1"
- }
- },
"node_modules/@types/responselike": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.3.tgz",
@@ -620,14 +611,6 @@
"@types/node": "*"
}
},
- "node_modules/@types/verror": {
- "version": "1.10.11",
- "resolved": "https://registry.npmjs.org/@types/verror/-/verror-1.10.11.tgz",
- "integrity": "sha512-RlDm9K7+o5stv0Co8i8ZRGxDbrTxhJtgjqjFyVh/tXQyl/rYtTKlnTvZ88oSTeYREWurwx20Js4kTuKCsFkUtg==",
- "dev": true,
- "license": "MIT",
- "optional": true
- },
"node_modules/@types/yauzl": {
"version": "2.10.3",
"resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.3.tgz",
@@ -710,7 +693,6 @@
"version": "4.3.0",
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
"integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
- "dev": true,
"license": "MIT",
"dependencies": {
"color-convert": "^2.0.1"
@@ -909,28 +891,6 @@
"dev": true,
"license": "Python-2.0"
},
- "node_modules/assert-plus": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
- "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==",
- "dev": true,
- "license": "MIT",
- "optional": true,
- "engines": {
- "node": ">=0.8"
- }
- },
- "node_modules/astral-regex": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz",
- "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==",
- "dev": true,
- "license": "MIT",
- "optional": true,
- "engines": {
- "node": ">=8"
- }
- },
"node_modules/async": {
"version": "3.2.6",
"resolved": "https://registry.npmjs.org/async/-/async-3.2.6.tgz",
@@ -1062,6 +1022,7 @@
}
],
"license": "MIT",
+ "peer": true,
"dependencies": {
"base64-js": "^1.3.1",
"ieee754": "^1.1.13"
@@ -1221,7 +1182,6 @@
"version": "4.1.2",
"resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
"integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
- "dev": true,
"license": "MIT",
"dependencies": {
"ansi-styles": "^4.1.0",
@@ -1267,24 +1227,6 @@
"node": ">=8"
}
},
- "node_modules/cli-truncate": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-2.1.0.tgz",
- "integrity": "sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==",
- "dev": true,
- "license": "MIT",
- "optional": true,
- "dependencies": {
- "slice-ansi": "^3.0.0",
- "string-width": "^4.2.0"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
"node_modules/cliui": {
"version": "8.0.1",
"resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz",
@@ -1317,7 +1259,6 @@
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
"integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
- "dev": true,
"license": "MIT",
"dependencies": {
"color-name": "~1.1.4"
@@ -1330,7 +1271,6 @@
"version": "1.1.4",
"resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
"integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
- "dev": true,
"license": "MIT"
},
"node_modules/combined-stream": {
@@ -1454,18 +1394,8 @@
"resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
"integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==",
"dev": true,
- "license": "MIT"
- },
- "node_modules/crc": {
- "version": "3.8.0",
- "resolved": "https://registry.npmjs.org/crc/-/crc-3.8.0.tgz",
- "integrity": "sha512-iX3mfgcTMIq3ZKLIsVFAbv7+Mc10kxabAGQb8HvjA1o3T1PIYprbakQ65d3I+2HGHt6nSKkM9PYjgoJO2KcFBQ==",
- "dev": true,
"license": "MIT",
- "optional": true,
- "dependencies": {
- "buffer": "^5.1.0"
- }
+ "peer": true
},
"node_modules/crc-32": {
"version": "1.2.2",
@@ -1715,33 +1645,6 @@
"node": ">= 10.0.0"
}
},
- "node_modules/dmg-license": {
- "version": "1.0.11",
- "resolved": "https://registry.npmjs.org/dmg-license/-/dmg-license-1.0.11.tgz",
- "integrity": "sha512-ZdzmqwKmECOWJpqefloC5OJy1+WZBBse5+MR88z9g9Zn4VY+WYUkAyojmhzJckH5YbbZGcYIuGAkY5/Ys5OM2Q==",
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "darwin"
- ],
- "dependencies": {
- "@types/plist": "^3.0.1",
- "@types/verror": "^1.10.3",
- "ajv": "^6.10.0",
- "crc": "^3.8.0",
- "iconv-corefoundation": "^1.1.7",
- "plist": "^3.0.4",
- "smart-buffer": "^4.0.2",
- "verror": "^1.10.0"
- },
- "bin": {
- "dmg-license": "bin/dmg-license.js"
- },
- "engines": {
- "node": ">=8"
- }
- },
"node_modules/dotenv": {
"version": "9.0.2",
"resolved": "https://registry.npmjs.org/dotenv/-/dotenv-9.0.2.tgz",
@@ -2126,17 +2029,6 @@
"@types/yauzl": "^2.9.1"
}
},
- "node_modules/extsprintf": {
- "version": "1.4.1",
- "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.4.1.tgz",
- "integrity": "sha512-Wrk35e8ydCKDj/ArClo1VrPVmN8zph5V4AtHwIuHhvMXsKf73UT3BOD+azBIW+3wOJ4FhEH7zyaJCFvChjYvMA==",
- "dev": true,
- "engines": [
- "node >=0.6.0"
- ],
- "license": "MIT",
- "optional": true
- },
"node_modules/fast-deep-equal": {
"version": "3.1.3",
"resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
@@ -2171,6 +2063,29 @@
"minimatch": "^5.0.1"
}
},
+ "node_modules/find-process": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/find-process/-/find-process-2.1.1.tgz",
+ "integrity": "sha512-SrQDx3QhlmHM90iqn9rdjCQcw/T+WlpOkHFsjoRgB+zTpDfltNA1VSNYeYELwhUTJy12UFxqjWhmhOrJc+o4sA==",
+ "license": "MIT",
+ "dependencies": {
+ "chalk": "~4.1.2",
+ "commander": "^14.0.3",
+ "loglevel": "^1.9.2"
+ },
+ "bin": {
+ "find-process": "dist/cjs/bin/find-process.js"
+ }
+ },
+ "node_modules/find-process/node_modules/commander": {
+ "version": "14.0.3",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-14.0.3.tgz",
+ "integrity": "sha512-H+y0Jo/T1RZ9qPP4Eh1pkcQcLRglraJaSLoyOtHxu6AapkjWVCy2Sit1QQ4x3Dng8qDlSsZEet7g5Pq06MvTgw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=20"
+ }
+ },
"node_modules/foreground-child": {
"version": "3.3.1",
"resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz",
@@ -2483,7 +2398,6 @@
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
"integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
- "dev": true,
"license": "MIT",
"engines": {
"node": ">=8"
@@ -2608,24 +2522,6 @@
"node": ">= 6"
}
},
- "node_modules/iconv-corefoundation": {
- "version": "1.1.7",
- "resolved": "https://registry.npmjs.org/iconv-corefoundation/-/iconv-corefoundation-1.1.7.tgz",
- "integrity": "sha512-T10qvkw0zz4wnm560lOEg0PovVqUXuOFhhHAkixw8/sycy7TJt7v/RrkEKEQnAw2viPSJu6iAkErxnzR0g8PpQ==",
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "darwin"
- ],
- "dependencies": {
- "cli-truncate": "^2.1.0",
- "node-addon-api": "^1.6.3"
- },
- "engines": {
- "node": "^8.11.2 || >=10"
- }
- },
"node_modules/iconv-lite": {
"version": "0.6.3",
"resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz",
@@ -2658,7 +2554,8 @@
"url": "https://feross.org/support"
}
],
- "license": "BSD-3-Clause"
+ "license": "BSD-3-Clause",
+ "peer": true
},
"node_modules/inflight": {
"version": "1.0.6",
@@ -2936,6 +2833,19 @@
"license": "MIT",
"peer": true
},
+ "node_modules/loglevel": {
+ "version": "1.9.2",
+ "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.9.2.tgz",
+ "integrity": "sha512-HgMmCqIJSAKqo68l0rS2AanEWfkxaZ5wNiEFb5ggm08lDs9Xl2KxBlX3PTcaD2chBM1gXAYf491/M2Rv8Jwayg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.6.0"
+ },
+ "funding": {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/loglevel"
+ }
+ },
"node_modules/lowercase-keys": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz",
@@ -3109,14 +3019,6 @@
"dev": true,
"license": "MIT"
},
- "node_modules/node-addon-api": {
- "version": "1.7.2",
- "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-1.7.2.tgz",
- "integrity": "sha512-ibPK3iA+vaY1eEjESkQkM0BbCqFOaZMiXRTtdB0u7b4djtY6JnsjvPdUHVMg6xQt3B8fpTTWHI9A+ADjM9frzg==",
- "dev": true,
- "license": "MIT",
- "optional": true
- },
"node_modules/normalize-path": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
@@ -3568,34 +3470,6 @@
"node": ">=10"
}
},
- "node_modules/slice-ansi": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-3.0.0.tgz",
- "integrity": "sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==",
- "dev": true,
- "license": "MIT",
- "optional": true,
- "dependencies": {
- "ansi-styles": "^4.0.0",
- "astral-regex": "^2.0.0",
- "is-fullwidth-code-point": "^3.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/smart-buffer": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz",
- "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==",
- "dev": true,
- "license": "MIT",
- "optional": true,
- "engines": {
- "node": ">= 6.0.0",
- "npm": ">= 3.0.0"
- }
- },
"node_modules/source-map": {
"version": "0.6.1",
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
@@ -3721,7 +3595,6 @@
"version": "7.2.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
"integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
- "dev": true,
"license": "MIT",
"dependencies": {
"has-flag": "^4.0.0"
@@ -3916,22 +3789,6 @@
"license": "MIT",
"peer": true
},
- "node_modules/verror": {
- "version": "1.10.1",
- "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.1.tgz",
- "integrity": "sha512-veufcmxri4e3XSrT0xwfUR7kguIkaxBeosDg00yDWhk49wdwkSUrvvsm7nc75e1PUyvIeZj6nS8VQRYz2/S4Xg==",
- "dev": true,
- "license": "MIT",
- "optional": true,
- "dependencies": {
- "assert-plus": "^1.0.0",
- "core-util-is": "1.0.2",
- "extsprintf": "^1.2.0"
- },
- "engines": {
- "node": ">=0.6.0"
- }
- },
"node_modules/which": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
diff --git a/package.json b/package.json
index 2f9cab03..81c27f24 100644
--- a/package.json
+++ b/package.json
@@ -5,9 +5,9 @@
"main": "electron/main.js",
"scripts": {
"electron": "electron .",
- "electron:dev": "electron .",
- "build:frontend": "cd Frontend && ng build --output-path ../electron/dist/frontend",
- "build:backend": "cd RDF_Back && mvn clean package -DskipTests",
+ "electron:dev": "NODE_ENV=development electron .",
+ "build:frontend": "cd Frontend && ng build --output-path ../electron/dist/frontend --base-href ./",
+ "build:backend": "cd Backend && mvn clean package -DskipTests",
"build:all": "npm run build:frontend && npm run build:backend",
"start": "npm run build:all && electron .",
"package": "npm run build:all && electron-builder --dir",
@@ -15,7 +15,7 @@
},
"build": {
"appId": "com.uspn.projet-rdf",
- "productName": "Gestionnaire RDF",
+ "productName": "FieldArchive",
"directories": {
"output": "dist-electron"
},
@@ -25,8 +25,12 @@
],
"extraResources": [
{
- "from": "RDF_Back/target/RDF_Back-0.0.1-SNAPSHOT.jar",
- "to": "RDF_Back/target/RDF_Back-0.0.1-SNAPSHOT.jar"
+ "from": "electron/dist/frontend",
+ "to": "frontend"
+ },
+ {
+ "from": "Backend/target/Backend-0.0.1-SNAPSHOT.jar",
+ "to": "Backend-0.0.1-SNAPSHOT.jar"
},
{
"from": "data",
@@ -35,6 +39,10 @@
{
"from": "projects",
"to": "projects"
+ },
+ {
+ "from": "jre",
+ "to": "jre"
}
],
"win": {
@@ -53,5 +61,8 @@
"devDependencies": {
"electron": "^29.0.0",
"electron-builder": "^24.0.0"
+ },
+ "dependencies": {
+ "find-process": "^2.1.1"
}
-}
\ No newline at end of file
+}
diff --git a/projects/archive/store/contexts.dat b/projects/archive/store/contexts.dat
deleted file mode 100644
index bf124523..00000000
Binary files a/projects/archive/store/contexts.dat and /dev/null differ
diff --git a/projects/archive/store/namespaces.dat b/projects/archive/store/namespaces.dat
deleted file mode 100644
index b1ec9998..00000000
--- a/projects/archive/store/namespaces.dat
+++ /dev/null
@@ -1 +0,0 @@
-nnf
\ No newline at end of file
diff --git a/projects/archive/store/nativerdf.ver b/projects/archive/store/nativerdf.ver
deleted file mode 100644
index fb467b15..00000000
--- a/projects/archive/store/nativerdf.ver
+++ /dev/null
@@ -1 +0,0 @@
-5.2.2
\ No newline at end of file
diff --git a/projects/archive/store/triples-posc.alloc b/projects/archive/store/triples-posc.alloc
deleted file mode 100644
index 86b2a60a..00000000
Binary files a/projects/archive/store/triples-posc.alloc and /dev/null differ
diff --git a/projects/archive/store/triples-posc.dat b/projects/archive/store/triples-posc.dat
deleted file mode 100644
index 0c4bb2fe..00000000
Binary files a/projects/archive/store/triples-posc.dat and /dev/null differ
diff --git a/projects/archive/store/triples-spoc.alloc b/projects/archive/store/triples-spoc.alloc
deleted file mode 100644
index 86b2a60a..00000000
Binary files a/projects/archive/store/triples-spoc.alloc and /dev/null differ
diff --git a/projects/archive/store/triples-spoc.dat b/projects/archive/store/triples-spoc.dat
deleted file mode 100644
index 0c4bb2fe..00000000
Binary files a/projects/archive/store/triples-spoc.dat and /dev/null differ
diff --git a/projects/archive/store/triples.prop b/projects/archive/store/triples.prop
deleted file mode 100644
index 9a115223..00000000
--- a/projects/archive/store/triples.prop
+++ /dev/null
@@ -1,4 +0,0 @@
-#triple indexes meta-data, DO NOT EDIT!
-#Wed Jan 07 12:58:53 CET 2026
-triple-indexes=spoc,posc
-version=10
diff --git a/projects/archive/store/txn-status b/projects/archive/store/txn-status
deleted file mode 100644
index e69de29b..00000000
diff --git a/projects/archive/store/values.dat b/projects/archive/store/values.dat
deleted file mode 100644
index 15be8f2e..00000000
Binary files a/projects/archive/store/values.dat and /dev/null differ
diff --git a/projects/archive/store/values.hash b/projects/archive/store/values.hash
deleted file mode 100644
index 9ddf7799..00000000
Binary files a/projects/archive/store/values.hash and /dev/null differ
diff --git a/projects/archive/store/values.id b/projects/archive/store/values.id
deleted file mode 100644
index 5124bd5a..00000000
Binary files a/projects/archive/store/values.id and /dev/null differ
diff --git a/projects/archive_56/store/contexts.dat b/projects/archive_56/store/contexts.dat
deleted file mode 100644
index be7a1e30..00000000
Binary files a/projects/archive_56/store/contexts.dat and /dev/null differ
diff --git a/projects/archive_56/store/namespaces.dat b/projects/archive_56/store/namespaces.dat
deleted file mode 100644
index b1ec9998..00000000
--- a/projects/archive_56/store/namespaces.dat
+++ /dev/null
@@ -1 +0,0 @@
-nnf
\ No newline at end of file
diff --git a/projects/archive_56/store/nativerdf.ver b/projects/archive_56/store/nativerdf.ver
deleted file mode 100644
index fb467b15..00000000
--- a/projects/archive_56/store/nativerdf.ver
+++ /dev/null
@@ -1 +0,0 @@
-5.2.2
\ No newline at end of file
diff --git a/projects/archive_56/store/triples-posc.alloc b/projects/archive_56/store/triples-posc.alloc
deleted file mode 100644
index 86b2a60a..00000000
Binary files a/projects/archive_56/store/triples-posc.alloc and /dev/null differ
diff --git a/projects/archive_56/store/triples-posc.dat b/projects/archive_56/store/triples-posc.dat
deleted file mode 100644
index 427db042..00000000
Binary files a/projects/archive_56/store/triples-posc.dat and /dev/null differ
diff --git a/projects/archive_56/store/triples-spoc.alloc b/projects/archive_56/store/triples-spoc.alloc
deleted file mode 100644
index 86b2a60a..00000000
Binary files a/projects/archive_56/store/triples-spoc.alloc and /dev/null differ
diff --git a/projects/archive_56/store/triples-spoc.dat b/projects/archive_56/store/triples-spoc.dat
deleted file mode 100644
index 6c4daab5..00000000
Binary files a/projects/archive_56/store/triples-spoc.dat and /dev/null differ
diff --git a/projects/archive_56/store/triples.prop b/projects/archive_56/store/triples.prop
deleted file mode 100644
index 8dcf06b9..00000000
--- a/projects/archive_56/store/triples.prop
+++ /dev/null
@@ -1,4 +0,0 @@
-#triple indexes meta-data, DO NOT EDIT!
-#Wed Jan 07 18:15:14 CET 2026
-triple-indexes=spoc,posc
-version=10
diff --git a/projects/archive_56/store/txn-status b/projects/archive_56/store/txn-status
deleted file mode 100644
index e69de29b..00000000
diff --git a/projects/archive_56/store/values.dat b/projects/archive_56/store/values.dat
deleted file mode 100644
index 1f19247e..00000000
Binary files a/projects/archive_56/store/values.dat and /dev/null differ
diff --git a/projects/archive_56/store/values.hash b/projects/archive_56/store/values.hash
deleted file mode 100644
index 8d26dc60..00000000
Binary files a/projects/archive_56/store/values.hash and /dev/null differ
diff --git a/projects/archive_56/store/values.id b/projects/archive_56/store/values.id
deleted file mode 100644
index c7e78381..00000000
Binary files a/projects/archive_56/store/values.id and /dev/null differ
diff --git a/projects/archive_5647/store/contexts.dat b/projects/archive_5647/store/contexts.dat
deleted file mode 100644
index bf124523..00000000
Binary files a/projects/archive_5647/store/contexts.dat and /dev/null differ
diff --git a/projects/archive_5647/store/namespaces.dat b/projects/archive_5647/store/namespaces.dat
deleted file mode 100644
index b1ec9998..00000000
--- a/projects/archive_5647/store/namespaces.dat
+++ /dev/null
@@ -1 +0,0 @@
-nnf
\ No newline at end of file
diff --git a/projects/archive_5647/store/nativerdf.ver b/projects/archive_5647/store/nativerdf.ver
deleted file mode 100644
index fb467b15..00000000
--- a/projects/archive_5647/store/nativerdf.ver
+++ /dev/null
@@ -1 +0,0 @@
-5.2.2
\ No newline at end of file
diff --git a/projects/archive_5647/store/triples-posc.alloc b/projects/archive_5647/store/triples-posc.alloc
deleted file mode 100644
index 86b2a60a..00000000
Binary files a/projects/archive_5647/store/triples-posc.alloc and /dev/null differ
diff --git a/projects/archive_5647/store/triples-posc.dat b/projects/archive_5647/store/triples-posc.dat
deleted file mode 100644
index 3a950417..00000000
Binary files a/projects/archive_5647/store/triples-posc.dat and /dev/null differ
diff --git a/projects/archive_5647/store/triples-spoc.alloc b/projects/archive_5647/store/triples-spoc.alloc
deleted file mode 100644
index 86b2a60a..00000000
Binary files a/projects/archive_5647/store/triples-spoc.alloc and /dev/null differ
diff --git a/projects/archive_5647/store/triples-spoc.dat b/projects/archive_5647/store/triples-spoc.dat
deleted file mode 100644
index 3a950417..00000000
Binary files a/projects/archive_5647/store/triples-spoc.dat and /dev/null differ
diff --git a/projects/archive_5647/store/triples.prop b/projects/archive_5647/store/triples.prop
deleted file mode 100644
index 8d0ded7e..00000000
--- a/projects/archive_5647/store/triples.prop
+++ /dev/null
@@ -1,4 +0,0 @@
-#triple indexes meta-data, DO NOT EDIT!
-#Wed Jan 07 13:10:41 CET 2026
-triple-indexes=spoc,posc
-version=10
diff --git a/projects/archive_5647/store/txn-status b/projects/archive_5647/store/txn-status
deleted file mode 100644
index e69de29b..00000000
diff --git a/projects/archive_5647/store/values.dat b/projects/archive_5647/store/values.dat
deleted file mode 100644
index eeb57fb1..00000000
Binary files a/projects/archive_5647/store/values.dat and /dev/null differ
diff --git a/projects/archive_5647/store/values.hash b/projects/archive_5647/store/values.hash
deleted file mode 100644
index 74612f8f..00000000
Binary files a/projects/archive_5647/store/values.hash and /dev/null differ
diff --git a/projects/archive_5647/store/values.id b/projects/archive_5647/store/values.id
deleted file mode 100644
index 5c6d86b6..00000000
Binary files a/projects/archive_5647/store/values.id and /dev/null differ
diff --git a/projects/archive_kha/store/contexts.dat b/projects/archive_kha/store/contexts.dat
deleted file mode 100644
index bf124523..00000000
Binary files a/projects/archive_kha/store/contexts.dat and /dev/null differ
diff --git a/projects/archive_kha/store/namespaces.dat b/projects/archive_kha/store/namespaces.dat
deleted file mode 100644
index b1ec9998..00000000
--- a/projects/archive_kha/store/namespaces.dat
+++ /dev/null
@@ -1 +0,0 @@
-nnf
\ No newline at end of file
diff --git a/projects/archive_kha/store/nativerdf.ver b/projects/archive_kha/store/nativerdf.ver
deleted file mode 100644
index fb467b15..00000000
--- a/projects/archive_kha/store/nativerdf.ver
+++ /dev/null
@@ -1 +0,0 @@
-5.2.2
\ No newline at end of file
diff --git a/projects/archive_kha/store/triples-posc.alloc b/projects/archive_kha/store/triples-posc.alloc
deleted file mode 100644
index 86b2a60a..00000000
Binary files a/projects/archive_kha/store/triples-posc.alloc and /dev/null differ
diff --git a/projects/archive_kha/store/triples-posc.dat b/projects/archive_kha/store/triples-posc.dat
deleted file mode 100644
index 0c4bb2fe..00000000
Binary files a/projects/archive_kha/store/triples-posc.dat and /dev/null differ
diff --git a/projects/archive_kha/store/triples-spoc.alloc b/projects/archive_kha/store/triples-spoc.alloc
deleted file mode 100644
index 86b2a60a..00000000
Binary files a/projects/archive_kha/store/triples-spoc.alloc and /dev/null differ
diff --git a/projects/archive_kha/store/triples-spoc.dat b/projects/archive_kha/store/triples-spoc.dat
deleted file mode 100644
index 0c4bb2fe..00000000
Binary files a/projects/archive_kha/store/triples-spoc.dat and /dev/null differ
diff --git a/projects/archive_kha/store/triples.prop b/projects/archive_kha/store/triples.prop
deleted file mode 100644
index 5e37dcef..00000000
--- a/projects/archive_kha/store/triples.prop
+++ /dev/null
@@ -1,4 +0,0 @@
-#triple indexes meta-data, DO NOT EDIT!
-#Wed Jan 07 03:01:13 CET 2026
-triple-indexes=spoc,posc
-version=10
diff --git a/projects/archive_kha/store/txn-status b/projects/archive_kha/store/txn-status
deleted file mode 100644
index e69de29b..00000000
diff --git a/projects/archive_kha/store/values.dat b/projects/archive_kha/store/values.dat
deleted file mode 100644
index 12d8fa4a..00000000
Binary files a/projects/archive_kha/store/values.dat and /dev/null differ
diff --git a/projects/archive_kha/store/values.hash b/projects/archive_kha/store/values.hash
deleted file mode 100644
index a982c13b..00000000
Binary files a/projects/archive_kha/store/values.hash and /dev/null differ
diff --git a/projects/archive_kha/store/values.id b/projects/archive_kha/store/values.id
deleted file mode 100644
index 95718a2b..00000000
Binary files a/projects/archive_kha/store/values.id and /dev/null differ
diff --git a/projects/archive_khaoula/store/contexts.dat b/projects/archive_khaoula/store/contexts.dat
deleted file mode 100644
index bf124523..00000000
Binary files a/projects/archive_khaoula/store/contexts.dat and /dev/null differ
diff --git a/projects/archive_khaoula/store/namespaces.dat b/projects/archive_khaoula/store/namespaces.dat
deleted file mode 100644
index b1ec9998..00000000
--- a/projects/archive_khaoula/store/namespaces.dat
+++ /dev/null
@@ -1 +0,0 @@
-nnf
\ No newline at end of file
diff --git a/projects/archive_khaoula/store/nativerdf.ver b/projects/archive_khaoula/store/nativerdf.ver
deleted file mode 100644
index fb467b15..00000000
--- a/projects/archive_khaoula/store/nativerdf.ver
+++ /dev/null
@@ -1 +0,0 @@
-5.2.2
\ No newline at end of file
diff --git a/projects/archive_khaoula/store/triples-posc.alloc b/projects/archive_khaoula/store/triples-posc.alloc
deleted file mode 100644
index 86b2a60a..00000000
Binary files a/projects/archive_khaoula/store/triples-posc.alloc and /dev/null differ
diff --git a/projects/archive_khaoula/store/triples-posc.dat b/projects/archive_khaoula/store/triples-posc.dat
deleted file mode 100644
index 0c4bb2fe..00000000
Binary files a/projects/archive_khaoula/store/triples-posc.dat and /dev/null differ
diff --git a/projects/archive_khaoula/store/triples-spoc.alloc b/projects/archive_khaoula/store/triples-spoc.alloc
deleted file mode 100644
index 86b2a60a..00000000
Binary files a/projects/archive_khaoula/store/triples-spoc.alloc and /dev/null differ
diff --git a/projects/archive_khaoula/store/triples-spoc.dat b/projects/archive_khaoula/store/triples-spoc.dat
deleted file mode 100644
index 0c4bb2fe..00000000
Binary files a/projects/archive_khaoula/store/triples-spoc.dat and /dev/null differ
diff --git a/projects/archive_khaoula/store/triples.prop b/projects/archive_khaoula/store/triples.prop
deleted file mode 100644
index 9ffc140e..00000000
--- a/projects/archive_khaoula/store/triples.prop
+++ /dev/null
@@ -1,4 +0,0 @@
-#triple indexes meta-data, DO NOT EDIT!
-#Wed Jan 07 12:24:20 CET 2026
-triple-indexes=spoc,posc
-version=10
diff --git a/projects/archive_khaoula/store/txn-status b/projects/archive_khaoula/store/txn-status
deleted file mode 100644
index e69de29b..00000000
diff --git a/projects/archive_khaoula/store/txncache.alloc b/projects/archive_khaoula/store/txncache.alloc
deleted file mode 100644
index e69de29b..00000000
diff --git a/projects/archive_khaoula/store/txncache.dat b/projects/archive_khaoula/store/txncache.dat
deleted file mode 100644
index 4b88b8b3..00000000
Binary files a/projects/archive_khaoula/store/txncache.dat and /dev/null differ
diff --git a/projects/archive_khaoula/store/values.dat b/projects/archive_khaoula/store/values.dat
deleted file mode 100644
index d829a996..00000000
Binary files a/projects/archive_khaoula/store/values.dat and /dev/null differ
diff --git a/projects/archive_khaoula/store/values.hash b/projects/archive_khaoula/store/values.hash
deleted file mode 100644
index 0b77a5b8..00000000
Binary files a/projects/archive_khaoula/store/values.hash and /dev/null differ
diff --git a/projects/archive_khaoula/store/values.id b/projects/archive_khaoula/store/values.id
deleted file mode 100644
index d0dcca95..00000000
Binary files a/projects/archive_khaoula/store/values.id and /dev/null differ
diff --git a/projects/archive_noha/store/contexts.dat b/projects/archive_noha/store/contexts.dat
deleted file mode 100644
index dcc3fd29..00000000
Binary files a/projects/archive_noha/store/contexts.dat and /dev/null differ
diff --git a/projects/archive_noha/store/namespaces.dat b/projects/archive_noha/store/namespaces.dat
deleted file mode 100644
index b1ec9998..00000000
--- a/projects/archive_noha/store/namespaces.dat
+++ /dev/null
@@ -1 +0,0 @@
-nnf
\ No newline at end of file
diff --git a/projects/archive_noha/store/nativerdf.ver b/projects/archive_noha/store/nativerdf.ver
deleted file mode 100644
index fb467b15..00000000
--- a/projects/archive_noha/store/nativerdf.ver
+++ /dev/null
@@ -1 +0,0 @@
-5.2.2
\ No newline at end of file
diff --git a/projects/archive_noha/store/triples-posc.alloc b/projects/archive_noha/store/triples-posc.alloc
deleted file mode 100644
index 86b2a60a..00000000
Binary files a/projects/archive_noha/store/triples-posc.alloc and /dev/null differ
diff --git a/projects/archive_noha/store/triples-posc.dat b/projects/archive_noha/store/triples-posc.dat
deleted file mode 100644
index 0f695477..00000000
Binary files a/projects/archive_noha/store/triples-posc.dat and /dev/null differ
diff --git a/projects/archive_noha/store/triples-spoc.alloc b/projects/archive_noha/store/triples-spoc.alloc
deleted file mode 100644
index 86b2a60a..00000000
Binary files a/projects/archive_noha/store/triples-spoc.alloc and /dev/null differ
diff --git a/projects/archive_noha/store/triples-spoc.dat b/projects/archive_noha/store/triples-spoc.dat
deleted file mode 100644
index 0d36c942..00000000
Binary files a/projects/archive_noha/store/triples-spoc.dat and /dev/null differ
diff --git a/projects/archive_noha/store/triples.prop b/projects/archive_noha/store/triples.prop
deleted file mode 100644
index c30f2913..00000000
--- a/projects/archive_noha/store/triples.prop
+++ /dev/null
@@ -1,4 +0,0 @@
-#triple indexes meta-data, DO NOT EDIT!
-#Wed Jan 07 02:00:47 CET 2026
-triple-indexes=spoc,posc
-version=10
diff --git a/projects/archive_noha/store/txn-status b/projects/archive_noha/store/txn-status
deleted file mode 100644
index e69de29b..00000000
diff --git a/projects/archive_noha/store/txncache.alloc b/projects/archive_noha/store/txncache.alloc
deleted file mode 100644
index e69de29b..00000000
diff --git a/projects/archive_noha/store/txncache.dat b/projects/archive_noha/store/txncache.dat
deleted file mode 100644
index 4b88b8b3..00000000
Binary files a/projects/archive_noha/store/txncache.dat and /dev/null differ
diff --git a/projects/archive_noha/store/values.dat b/projects/archive_noha/store/values.dat
deleted file mode 100644
index 5414bf09..00000000
Binary files a/projects/archive_noha/store/values.dat and /dev/null differ
diff --git a/projects/archive_noha/store/values.hash b/projects/archive_noha/store/values.hash
deleted file mode 100644
index 5dde08b7..00000000
Binary files a/projects/archive_noha/store/values.hash and /dev/null differ
diff --git a/projects/archive_noha/store/values.id b/projects/archive_noha/store/values.id
deleted file mode 100644
index ce34e8e9..00000000
Binary files a/projects/archive_noha/store/values.id and /dev/null differ
diff --git a/projects/archive_pop/store/contexts.dat b/projects/archive_pop/store/contexts.dat
deleted file mode 100644
index bf124523..00000000
Binary files a/projects/archive_pop/store/contexts.dat and /dev/null differ
diff --git a/projects/archive_pop/store/namespaces.dat b/projects/archive_pop/store/namespaces.dat
deleted file mode 100644
index b1ec9998..00000000
--- a/projects/archive_pop/store/namespaces.dat
+++ /dev/null
@@ -1 +0,0 @@
-nnf
\ No newline at end of file
diff --git a/projects/archive_pop/store/nativerdf.ver b/projects/archive_pop/store/nativerdf.ver
deleted file mode 100644
index fb467b15..00000000
--- a/projects/archive_pop/store/nativerdf.ver
+++ /dev/null
@@ -1 +0,0 @@
-5.2.2
\ No newline at end of file
diff --git a/projects/archive_pop/store/triples-posc.alloc b/projects/archive_pop/store/triples-posc.alloc
deleted file mode 100644
index 86b2a60a..00000000
Binary files a/projects/archive_pop/store/triples-posc.alloc and /dev/null differ
diff --git a/projects/archive_pop/store/triples-posc.dat b/projects/archive_pop/store/triples-posc.dat
deleted file mode 100644
index 3a950417..00000000
Binary files a/projects/archive_pop/store/triples-posc.dat and /dev/null differ
diff --git a/projects/archive_pop/store/triples-spoc.alloc b/projects/archive_pop/store/triples-spoc.alloc
deleted file mode 100644
index 86b2a60a..00000000
Binary files a/projects/archive_pop/store/triples-spoc.alloc and /dev/null differ
diff --git a/projects/archive_pop/store/triples-spoc.dat b/projects/archive_pop/store/triples-spoc.dat
deleted file mode 100644
index 3a950417..00000000
Binary files a/projects/archive_pop/store/triples-spoc.dat and /dev/null differ
diff --git a/projects/archive_pop/store/triples.prop b/projects/archive_pop/store/triples.prop
deleted file mode 100644
index 06adc4d6..00000000
--- a/projects/archive_pop/store/triples.prop
+++ /dev/null
@@ -1,4 +0,0 @@
-#triple indexes meta-data, DO NOT EDIT!
-#Wed Jan 07 12:38:42 CET 2026
-triple-indexes=spoc,posc
-version=10
diff --git a/projects/archive_pop/store/txn-status b/projects/archive_pop/store/txn-status
deleted file mode 100644
index e69de29b..00000000
diff --git a/projects/archive_pop/store/txncache.alloc b/projects/archive_pop/store/txncache.alloc
deleted file mode 100644
index e69de29b..00000000
diff --git a/projects/archive_pop/store/txncache.dat b/projects/archive_pop/store/txncache.dat
deleted file mode 100644
index 4b88b8b3..00000000
Binary files a/projects/archive_pop/store/txncache.dat and /dev/null differ
diff --git a/projects/archive_pop/store/values.dat b/projects/archive_pop/store/values.dat
deleted file mode 100644
index a4c24f01..00000000
Binary files a/projects/archive_pop/store/values.dat and /dev/null differ
diff --git a/projects/archive_pop/store/values.hash b/projects/archive_pop/store/values.hash
deleted file mode 100644
index 8af52eab..00000000
Binary files a/projects/archive_pop/store/values.hash and /dev/null differ
diff --git a/projects/archive_pop/store/values.id b/projects/archive_pop/store/values.id
deleted file mode 100644
index 19e0bd1c..00000000
Binary files a/projects/archive_pop/store/values.id and /dev/null differ
diff --git a/projects/archive_ppop/store/contexts.dat b/projects/archive_ppop/store/contexts.dat
deleted file mode 100644
index bf124523..00000000
Binary files a/projects/archive_ppop/store/contexts.dat and /dev/null differ
diff --git a/projects/archive_ppop/store/namespaces.dat b/projects/archive_ppop/store/namespaces.dat
deleted file mode 100644
index b1ec9998..00000000
--- a/projects/archive_ppop/store/namespaces.dat
+++ /dev/null
@@ -1 +0,0 @@
-nnf
\ No newline at end of file
diff --git a/projects/archive_ppop/store/nativerdf.ver b/projects/archive_ppop/store/nativerdf.ver
deleted file mode 100644
index fb467b15..00000000
--- a/projects/archive_ppop/store/nativerdf.ver
+++ /dev/null
@@ -1 +0,0 @@
-5.2.2
\ No newline at end of file
diff --git a/projects/archive_ppop/store/triples-posc.alloc b/projects/archive_ppop/store/triples-posc.alloc
deleted file mode 100644
index 86b2a60a..00000000
Binary files a/projects/archive_ppop/store/triples-posc.alloc and /dev/null differ
diff --git a/projects/archive_ppop/store/triples-posc.dat b/projects/archive_ppop/store/triples-posc.dat
deleted file mode 100644
index 0c4bb2fe..00000000
Binary files a/projects/archive_ppop/store/triples-posc.dat and /dev/null differ
diff --git a/projects/archive_ppop/store/triples-spoc.alloc b/projects/archive_ppop/store/triples-spoc.alloc
deleted file mode 100644
index 86b2a60a..00000000
Binary files a/projects/archive_ppop/store/triples-spoc.alloc and /dev/null differ
diff --git a/projects/archive_ppop/store/triples-spoc.dat b/projects/archive_ppop/store/triples-spoc.dat
deleted file mode 100644
index 0c4bb2fe..00000000
Binary files a/projects/archive_ppop/store/triples-spoc.dat and /dev/null differ
diff --git a/projects/archive_ppop/store/triples.prop b/projects/archive_ppop/store/triples.prop
deleted file mode 100644
index 2963fda6..00000000
--- a/projects/archive_ppop/store/triples.prop
+++ /dev/null
@@ -1,4 +0,0 @@
-#triple indexes meta-data, DO NOT EDIT!
-#Wed Jan 07 03:03:13 CET 2026
-triple-indexes=spoc,posc
-version=10
diff --git a/projects/archive_ppop/store/txn-status b/projects/archive_ppop/store/txn-status
deleted file mode 100644
index e69de29b..00000000
diff --git a/projects/archive_ppop/store/txncache.alloc b/projects/archive_ppop/store/txncache.alloc
deleted file mode 100644
index e69de29b..00000000
diff --git a/projects/archive_ppop/store/txncache.dat b/projects/archive_ppop/store/txncache.dat
deleted file mode 100644
index 4b88b8b3..00000000
Binary files a/projects/archive_ppop/store/txncache.dat and /dev/null differ
diff --git a/projects/archive_ppop/store/values.dat b/projects/archive_ppop/store/values.dat
deleted file mode 100644
index 7a41173b..00000000
Binary files a/projects/archive_ppop/store/values.dat and /dev/null differ
diff --git a/projects/archive_ppop/store/values.hash b/projects/archive_ppop/store/values.hash
deleted file mode 100644
index d8f2bb46..00000000
Binary files a/projects/archive_ppop/store/values.hash and /dev/null differ
diff --git a/projects/archive_ppop/store/values.id b/projects/archive_ppop/store/values.id
deleted file mode 100644
index ad51488d..00000000
Binary files a/projects/archive_ppop/store/values.id and /dev/null differ
diff --git a/projects/archive_test/store/contexts.dat b/projects/archive_test/store/contexts.dat
deleted file mode 100644
index f7a5aa96..00000000
Binary files a/projects/archive_test/store/contexts.dat and /dev/null differ
diff --git a/projects/archive_test/store/namespaces.dat b/projects/archive_test/store/namespaces.dat
deleted file mode 100644
index 0e1999e7..00000000
Binary files a/projects/archive_test/store/namespaces.dat and /dev/null differ
diff --git a/projects/archive_test/store/nativerdf.ver b/projects/archive_test/store/nativerdf.ver
deleted file mode 100644
index fb467b15..00000000
--- a/projects/archive_test/store/nativerdf.ver
+++ /dev/null
@@ -1 +0,0 @@
-5.2.2
\ No newline at end of file
diff --git a/projects/archive_test/store/triples-posc.alloc b/projects/archive_test/store/triples-posc.alloc
deleted file mode 100644
index 86b2a60a..00000000
Binary files a/projects/archive_test/store/triples-posc.alloc and /dev/null differ
diff --git a/projects/archive_test/store/triples-posc.dat b/projects/archive_test/store/triples-posc.dat
deleted file mode 100644
index 70986233..00000000
Binary files a/projects/archive_test/store/triples-posc.dat and /dev/null differ
diff --git a/projects/archive_test/store/triples-spoc.alloc b/projects/archive_test/store/triples-spoc.alloc
deleted file mode 100644
index 86b2a60a..00000000
Binary files a/projects/archive_test/store/triples-spoc.alloc and /dev/null differ
diff --git a/projects/archive_test/store/triples-spoc.dat b/projects/archive_test/store/triples-spoc.dat
deleted file mode 100644
index e2aa277a..00000000
Binary files a/projects/archive_test/store/triples-spoc.dat and /dev/null differ
diff --git a/projects/archive_test/store/triples.prop b/projects/archive_test/store/triples.prop
deleted file mode 100644
index e8076bf5..00000000
--- a/projects/archive_test/store/triples.prop
+++ /dev/null
@@ -1,4 +0,0 @@
-#triple indexes meta-data, DO NOT EDIT!
-#Tue Jan 06 23:38:24 CET 2026
-triple-indexes=spoc,posc
-version=10
diff --git a/projects/archive_test/store/txn-status b/projects/archive_test/store/txn-status
deleted file mode 100644
index e69de29b..00000000
diff --git a/projects/archive_test/store/txncache.alloc b/projects/archive_test/store/txncache.alloc
deleted file mode 100644
index e69de29b..00000000
diff --git a/projects/archive_test/store/txncache.dat b/projects/archive_test/store/txncache.dat
deleted file mode 100644
index 4b88b8b3..00000000
Binary files a/projects/archive_test/store/txncache.dat and /dev/null differ
diff --git a/projects/archive_test/store/values.dat b/projects/archive_test/store/values.dat
deleted file mode 100644
index cd7e8ff3..00000000
Binary files a/projects/archive_test/store/values.dat and /dev/null differ
diff --git a/projects/archive_test/store/values.hash b/projects/archive_test/store/values.hash
deleted file mode 100644
index e740a157..00000000
Binary files a/projects/archive_test/store/values.hash and /dev/null differ
diff --git a/projects/archive_test/store/values.id b/projects/archive_test/store/values.id
deleted file mode 100644
index 37361855..00000000
Binary files a/projects/archive_test/store/values.id and /dev/null differ
diff --git a/projects/archive_test1/store/contexts.dat b/projects/archive_test1/store/contexts.dat
deleted file mode 100644
index dcc3fd29..00000000
Binary files a/projects/archive_test1/store/contexts.dat and /dev/null differ
diff --git a/projects/archive_test1/store/namespaces.dat b/projects/archive_test1/store/namespaces.dat
deleted file mode 100644
index b1ec9998..00000000
--- a/projects/archive_test1/store/namespaces.dat
+++ /dev/null
@@ -1 +0,0 @@
-nnf
\ No newline at end of file
diff --git a/projects/archive_test1/store/nativerdf.ver b/projects/archive_test1/store/nativerdf.ver
deleted file mode 100644
index fb467b15..00000000
--- a/projects/archive_test1/store/nativerdf.ver
+++ /dev/null
@@ -1 +0,0 @@
-5.2.2
\ No newline at end of file
diff --git a/projects/archive_test1/store/triples-posc.alloc b/projects/archive_test1/store/triples-posc.alloc
deleted file mode 100644
index 86b2a60a..00000000
Binary files a/projects/archive_test1/store/triples-posc.alloc and /dev/null differ
diff --git a/projects/archive_test1/store/triples-posc.dat b/projects/archive_test1/store/triples-posc.dat
deleted file mode 100644
index 3b56d8b3..00000000
Binary files a/projects/archive_test1/store/triples-posc.dat and /dev/null differ
diff --git a/projects/archive_test1/store/triples-spoc.alloc b/projects/archive_test1/store/triples-spoc.alloc
deleted file mode 100644
index 86b2a60a..00000000
Binary files a/projects/archive_test1/store/triples-spoc.alloc and /dev/null differ
diff --git a/projects/archive_test1/store/triples-spoc.dat b/projects/archive_test1/store/triples-spoc.dat
deleted file mode 100644
index 0532ab75..00000000
Binary files a/projects/archive_test1/store/triples-spoc.dat and /dev/null differ
diff --git a/projects/archive_test1/store/triples.prop b/projects/archive_test1/store/triples.prop
deleted file mode 100644
index 018b1a05..00000000
--- a/projects/archive_test1/store/triples.prop
+++ /dev/null
@@ -1,4 +0,0 @@
-#triple indexes meta-data, DO NOT EDIT!
-#Wed Jan 07 01:30:14 CET 2026
-triple-indexes=spoc,posc
-version=10
diff --git a/projects/archive_test1/store/txn-status b/projects/archive_test1/store/txn-status
deleted file mode 100644
index e69de29b..00000000
diff --git a/projects/archive_test1/store/txncache.alloc b/projects/archive_test1/store/txncache.alloc
deleted file mode 100644
index e69de29b..00000000
diff --git a/projects/archive_test1/store/txncache.dat b/projects/archive_test1/store/txncache.dat
deleted file mode 100644
index 4b88b8b3..00000000
Binary files a/projects/archive_test1/store/txncache.dat and /dev/null differ
diff --git a/projects/archive_test1/store/values.dat b/projects/archive_test1/store/values.dat
deleted file mode 100644
index e7bf917e..00000000
Binary files a/projects/archive_test1/store/values.dat and /dev/null differ
diff --git a/projects/archive_test1/store/values.hash b/projects/archive_test1/store/values.hash
deleted file mode 100644
index a4224de3..00000000
Binary files a/projects/archive_test1/store/values.hash and /dev/null differ
diff --git a/projects/archive_test1/store/values.id b/projects/archive_test1/store/values.id
deleted file mode 100644
index f8221c25..00000000
Binary files a/projects/archive_test1/store/values.id and /dev/null differ
diff --git a/projects/projet1/store/contexts.dat b/projects/projet1/store/contexts.dat
deleted file mode 100644
index bf124523..00000000
Binary files a/projects/projet1/store/contexts.dat and /dev/null differ
diff --git a/projects/projet1/store/namespaces.dat b/projects/projet1/store/namespaces.dat
deleted file mode 100644
index b1ec9998..00000000
--- a/projects/projet1/store/namespaces.dat
+++ /dev/null
@@ -1 +0,0 @@
-nnf
\ No newline at end of file
diff --git a/projects/projet1/store/nativerdf.ver b/projects/projet1/store/nativerdf.ver
deleted file mode 100644
index fb467b15..00000000
--- a/projects/projet1/store/nativerdf.ver
+++ /dev/null
@@ -1 +0,0 @@
-5.2.2
\ No newline at end of file
diff --git a/projects/projet1/store/triples-posc.alloc b/projects/projet1/store/triples-posc.alloc
deleted file mode 100644
index 86b2a60a..00000000
Binary files a/projects/projet1/store/triples-posc.alloc and /dev/null differ
diff --git a/projects/projet1/store/triples-posc.dat b/projects/projet1/store/triples-posc.dat
deleted file mode 100644
index 0c4bb2fe..00000000
Binary files a/projects/projet1/store/triples-posc.dat and /dev/null differ
diff --git a/projects/projet1/store/triples-spoc.alloc b/projects/projet1/store/triples-spoc.alloc
deleted file mode 100644
index 86b2a60a..00000000
Binary files a/projects/projet1/store/triples-spoc.alloc and /dev/null differ
diff --git a/projects/projet1/store/triples-spoc.dat b/projects/projet1/store/triples-spoc.dat
deleted file mode 100644
index 0c4bb2fe..00000000
Binary files a/projects/projet1/store/triples-spoc.dat and /dev/null differ
diff --git a/projects/projet1/store/triples.prop b/projects/projet1/store/triples.prop
deleted file mode 100644
index 3f8b0519..00000000
--- a/projects/projet1/store/triples.prop
+++ /dev/null
@@ -1,4 +0,0 @@
-#triple indexes meta-data, DO NOT EDIT!
-#Wed Jan 07 18:42:31 CET 2026
-triple-indexes=spoc,posc
-version=10
diff --git a/projects/projet1/store/txn-status b/projects/projet1/store/txn-status
deleted file mode 100644
index e69de29b..00000000
diff --git a/projects/projet1/store/values.dat b/projects/projet1/store/values.dat
deleted file mode 100644
index e1866d31..00000000
Binary files a/projects/projet1/store/values.dat and /dev/null differ
diff --git a/projects/projet1/store/values.hash b/projects/projet1/store/values.hash
deleted file mode 100644
index 5b660a7a..00000000
Binary files a/projects/projet1/store/values.hash and /dev/null differ
diff --git a/projects/projet1/store/values.id b/projects/projet1/store/values.id
deleted file mode 100644
index 5124bd5a..00000000
Binary files a/projects/projet1/store/values.id and /dev/null differ
diff --git a/samples/dataset1/Tiny.ttl b/samples/dataset1/Tiny.ttl
new file mode 100644
index 00000000..228078f1
--- /dev/null
+++ b/samples/dataset1/Tiny.ttl
@@ -0,0 +1,111 @@
+@prefix rico: .
+
+ a rico:Person ;
+ rico:name "Martin" .
+
+ a rico:Person ;
+ rico:name "Elaisa" .
+
+ a rico:Activity ;
+ rico:name "A data session about infinitive forms" ;
+ rico:documentedBy ;
+ rico:hasActivityType ;
+ rico:date "2019-06-25" ;
+ rico:note "Dogs were fighting during the data session and the recordings are of poor quality" ;
+ rico:hasOrHadParticipant .
+
+ a rico:ActivityType ;
+ rico:name "DataSession" .
+
+ a rico:DocumentaryFormType ;
+ rico:name "Manuscript fieldnote".
+
+ a rico:DocumentaryFormType ;
+ rico:name "Audio recording of a data session".
+
+ a rico:ContentType ;
+ rico:name "text".
+
+ a rico:ContentType ;
+ rico:name "Audio speech recording".
+
+ a rico:Record ;
+ rico:name "Notebook 2019, vol. I p 32-34" ;
+ rico:hasDocumentaryFormType ;
+ rico:hasContentOfType ;
+ rico:hasOrHadLanguage