From 6958651e88936e7f2aab34e2dc2a616f0477942c Mon Sep 17 00:00:00 2001 From: paulgirard Date: Mon, 7 Oct 2024 14:14:51 +0000 Subject: [PATCH] =?UTF-8?q?Deploying=20to=20gh-pages=20from=20@=20gephi/ge?= =?UTF-8?q?phi-lite@0467e0b1e1db9994b925a659daf1b897c3b2ae70=20?= =?UTF-8?q?=F0=9F=9A=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- assets/{index-bNUQ993l.js => index-Dv6UmblH.js} | 8 ++++---- index.html | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) rename assets/{index-bNUQ993l.js => index-Dv6UmblH.js} (90%) diff --git a/assets/index-bNUQ993l.js b/assets/index-Dv6UmblH.js similarity index 90% rename from assets/index-bNUQ993l.js rename to assets/index-Dv6UmblH.js index a167dba..d8bd043 100644 --- a/assets/index-bNUQ993l.js +++ b/assets/index-Dv6UmblH.js @@ -166,7 +166,7 @@ function print() { __p += __j.call(arguments, '') } @`+(e.systemId||"")+"#[line:"+e.lineNumber+",col:"+e.columnNumber+"]"}function FP(e,t,n){return typeof e=="string"?e.substr(t,n):e.length>=t+n||t?new java.lang.String(e,t,n)+"":e}"endDTD,startEntity,endEntity,attributeDecl,elementDecl,externalEntityDecl,internalEntityDecl,resolveEntity,getExternalSubset,notationDecl,unparsedEntityDecl".replace(/\w+/g,function(e){r_.prototype[e]=function(){return null}});function cE(e,t){e.currentElement?e.currentElement.appendChild(t):e.doc.appendChild(t)}cy.__DOMHandler=r_;cy.normalizeLineEndings=EH;cy.DOMParser=bH;var SH=wl;oy.DOMImplementation=SH.DOMImplementation;oy.XMLSerializer=SH.XMLSerializer;oy.DOMParser=cy.DOMParser;var yH=function(t){return t!==null&&typeof t=="function"&&typeof t.prototype=="object"&&typeof t.prototype.addUndirectedEdgeWithKey=="function"&&typeof t.prototype.dropNode=="function"},zp={},kle=/^\s$/,Ple=/\s*,\s*/,Fle=/\s*\|\s*/;function Ule(e){return kle.test(e)}function TH(e){var t,n,r,i,a=!1,o=!1,s=void 0,l=[],c="";for(r=0,i=e.length;r=2&&t[0]==="["&&t[t.length-1]==="]"?r=TH(t.slice(1,-1)):t.includes("|")?r=t.split(Fle):t.includes(",")?r=t.split(Ple):r=[t],r.map(function(i){return LO(n,i)})}else return LO(e,t)}zp.parseListPieces=TH;zp.parseScalarValue=LO;zp.parseValue=Ble;var Gle=/["'<>&\s]/g;zp.sanitizeTagName=function(t){return t.replace(Gle,"").trim()};var $le=yH,zle=Cl.mergeEdge,Hle=zp,CH=Hle.parseValue;function Vle(e){return e!==e}function qle(e){var t=e.getAttribute("hex");if(t)return t;var n=e.getAttribute("a"),r=e.getAttribute("r"),i=e.getAttribute("g"),a=e.getAttribute("b");return n?"rgba("+r+","+i+","+a+","+n+")":"rgb("+r+","+i+","+a+")"}function ym(e,t){var n=e.getElementsByTagName("viz:"+t)[0];return n||(n=e.getElementsByTagNameNS("viz",t)[0]),n||(n=e.getElementsByTagName(t)[0]),n}function Yle(e){for(var t={},n,r,i=0,a=e.length;i0&&t.undirectedSize>0?"mixed":t.directedSize>0?"directed":"undirected"},FC,GP;function Kle(){if(GP)return FC;GP=1;function e(r){return typeof r!="number"&&!r}function t(r){if(typeof r=="string")return r;if(typeof r=="number")return r+"";if(typeof r=="function")return r();if(r instanceof n)return r.toString();throw Error("Bad Parameter")}function n(r,i){if(!(this instanceof n))return new n;this.name_regex=/[_:A-Za-z][-._:A-Za-z0-9]*/,this.indent=!!r,this.indentString=this.indent&&typeof r=="string"?r:" ",this.output="",this.stack=[],this.tags=0,this.attributes=0,this.attribute=0,this.texts=0,this.comment=0,this.dtd=0,this.root="",this.pi=0,this.cdata=0,this.started_write=!1,this.writer,this.writer_encoding="UTF-8",typeof i=="function"?this.writer=i:this.writer=function(a,o){this.output+=a}}return n.prototype={toString:function(){return this.flush(),this.output},indenter:function(){if(this.indent){this.write(` `);for(var r=1;r0;r--)this.endElement();this.tags=0},startDocument:function(r,i,a){return this.tags||this.attributes?this:(this.startPI("xml"),this.startAttribute("version"),this.text(typeof r=="string"?r:"1.0"),this.endAttribute(),typeof i=="string"&&(this.startAttribute("encoding"),this.text(i),this.endAttribute(),this.writer_encoding=i),a&&(this.startAttribute("standalone"),this.text("yes"),this.endAttribute()),this.endPI(),this.indent||this.write(` -`),this)},endDocument:function(){return this.attributes&&this.endAttributes(),this},writeElement:function(r,i){return this.startElement(r).text(i).endElement()},writeElementNS:function(r,i,a,o){return o||(o=a),this.startElementNS(r,i,a).text(o).endElement()},startElement:function(r){if(r=t(r),!r.match(this.name_regex)||this.tags===0&&this.root&&this.root!==r)throw Error("Invalid Parameter");return this.attributes&&this.endAttributes(),++this.tags,this.texts=0,this.stack.length>0&&(this.stack[this.stack.length-1].containsTag=!0),this.stack.push({name:r,tags:this.tags}),this.started_write&&this.indenter(),this.write("<",r),this.startAttributes(),this.started_write=!0,this},startElementNS:function(r,i,a){if(r=t(r),i=t(i),!r.match(this.name_regex)||!i.match(this.name_regex))throw Error("Invalid Parameter");return this.attributes&&this.endAttributes(),++this.tags,this.texts=0,this.stack.length>0&&(this.stack[this.stack.length-1].containsTag=!0),this.stack.push({name:r+":"+i,tags:this.tags}),this.started_write&&this.indenter(),this.write("<",r+":"+i),this.startAttributes(),this.started_write=!0,this},endElement:function(){if(!this.tags)return this;var r=this.stack.pop();return this.attributes>0?(this.attribute&&(this.texts&&this.endAttribute(),this.endAttribute()),this.write("/"),this.endAttributes()):(r.containsTag&&this.indenter(),this.write("")),--this.tags,this.texts=0,this},writeAttribute:function(r,i){return typeof i=="function"&&(i=i()),e(i)?this:this.startAttribute(r).text(i).endAttribute()},writeAttributeNS:function(r,i,a,o){return o||(o=a),typeof o=="function"&&(o=o()),e(o)?this:this.startAttributeNS(r,i,a).text(o).endAttribute()},startAttributes:function(){return this.attributes=1,this},endAttributes:function(){return this.attributes?(this.attribute&&this.endAttribute(),this.attributes=0,this.attribute=0,this.texts=0,this.write(">"),this):this},startAttribute:function(r){if(r=t(r),!r.match(this.name_regex))throw Error("Invalid Parameter");return!this.attributes&&!this.pi?this:this.attribute?this:(this.attribute=1,this.write(" ",r,'="'),this)},startAttributeNS:function(r,i,a){if(r=t(r),i=t(i),!r.match(this.name_regex)||!i.match(this.name_regex))throw Error("Invalid Parameter");return!this.attributes&&!this.pi?this:this.attribute?this:(this.attribute=1,this.write(" ",r+":"+i,'="'),this)},endAttribute:function(){return this.attribute?(this.attribute=0,this.texts=0,this.write('"'),this):this},text:function(r){return r=t(r),!this.tags&&!this.comment&&!this.pi&&!this.cdata?this:this.attributes&&this.attribute?(++this.texts,this.write(r.replace(/&/g,"&").replace(//g,">")),++this.texts,this.started_write=!0,this)},writeComment:function(r){return this.startComment().text(r).endComment()},startComment:function(){return this.comment?this:(this.attributes&&this.endAttributes(),this.indenter(),this.write(""),this.comment=0,this):this},writeDocType:function(r,i,a,o){return this.startDocType(r,i,a,o).endDocType()},startDocType:function(r,i,a,o){if(this.dtd||this.tags)return this;if(r=t(r),i=i&&t(i),a=a&&t(a),o=o&&t(o),!r.match(this.name_regex)||i&&!i.match(/^[\w\-][\w\s\-\/\+\:\.]*/)||a&&!a.match(/^[\w\.][\w\-\/\\\:\.]*/)||o&&!o.match(/[\w\s\<\>\+\.\!\#\-\?\*\,\(\)\|]*/))throw Error("Invalid Parameter");return i=i?' PUBLIC "'+i+'"':a?" SYSTEM":"",a=a?' "'+a+'"':"",o=o?" ["+o+"]":"",this.started_write&&this.indenter(),this.write(""),this):this},writePI:function(r,i){return this.startPI(r).text(i).endPI()},startPI:function(r){if(r=t(r),!r.match(this.name_regex))throw Error("Invalid Parameter");return this.pi?this:(this.attributes&&this.endAttributes(),this.started_write&&this.indenter(),this.write(""),this.pi=0,this):this},writeCData:function(r){return this.startCData().text(r).endCData()},startCData:function(){return this.cdata?this:(this.attributes&&this.endAttributes(),this.indenter(),this.write(""),this.cdata=0,this):this},writeRaw:function(r){return r=t(r),!this.tags&&!this.comment&&!this.pi&&!this.cdata?this:this.attributes&&this.attribute?(++this.texts,this.write(r.replace("&","&").replace('"',""")),this):(this.attributes&&!this.attribute&&this.endAttributes(),++this.texts,this.write(r),this.started_write=!0,this)}},FC=n,FC}var UC,$P;function Qle(){return $P||($P=1,UC=Kle()),UC}var BC,zP;function Xle(){if(zP)return BC;zP=1;var e=pn,t=uy,n=Qle(),r=zp.sanitizeTagName,i=new Set(["color","size","x","y","z","shape","thickness"]),a=/^\s*rgba?\s*\(/i,o=/^\s*rgba?\s*\(\s*([0-9]*)\s*,\s*([0-9]*)\s*,\s*([0-9]*)\s*(?:,\s*([.0-9]*))?\)\s*$/;function s(U){if(!U||typeof U!="string")return{};if(U[0]==="#")return U=U.slice(1),U.length===3?{r:parseInt(U[0]+U[0],16),g:parseInt(U[1]+U[1],16),b:parseInt(U[2]+U[2],16)}:{r:parseInt(U[0]+U[1],16),g:parseInt(U[2]+U[3],16),b:parseInt(U[4]+U[5],16)};if(a.test(U)){var K={};return U=U.match(o),K.r=+U[1],K.g=+U[2],K.b=+U[3],U[4]&&(K.a=+U[4]),K}return{}}function l(U,K,J){var te={},$;for($ in J)$==="label"?te.label=J.label:U==="edge"&&$==="weight"?te.weight=J.weight:U==="edge"&&$==="kind"?te.kind=J.kind:i.has($)?(te.viz=te.viz||{},te.viz[$]=J[$]):(te.attributes=te.attributes||{},te.attributes[$]=J[$]);return te}var c=l.bind(null,"node"),u=l.bind(null,"edge");function f(U){return U<=2147483647&&U>=-2147483647}function p(U){return typeof U>"u"||U===null||U===""||U!==U}var m={liststring:0,listdouble:1,listlong:2,listinteger:3,listboolean:4,string:5,double:6,long:7,integer:8,boolean:9,empty:10};function v(U){return p(U)?"empty":typeof U=="boolean"?"boolean":typeof U=="object"?"string":typeof U=="number"?U===(U|0)?f(U)?"integer":"long":"double":"string"}function _(U){for(var K="empty",J=m[K],te,$,q,M=0,ie=U.length;M","application/xml");rD.parse=Zle(RH.DOMParser,Jle.constructor);rD.write=Xle();var NH=rD;const ece=Rn(NH);function tce(){return{type:"idle"}}const QE=mi(tce()),nce=async e=>{QE.set({type:"loading"});try{const t=Wt.get(),n=ay.get();let r=vl(t,n);const i=nD.get();X8(r,t,i),t.metadata.type==="undirected"&&(r=lae(r));const a=NH.write(r,{});await e(a),QE.set({type:"idle"})}catch{QE.set({type:"error"})}},rce={exportAsGexf:nce};var AH={},wH={};function GC(e){return("0"+(e|0).toString(16)).slice(-2)}function ice(e,t,n){return"#"+GC(e)+GC(t)+GC(n)}function ace(e){var t={};for(var n in e)n==="r"||n==="g"||n==="b"||(t[n]=e[n]);return t}function oce(e){var t;return typeof e.r=="number"&&typeof e.g=="number"&&typeof e.b=="number"?(t=ace(e),t.color=ice(e.r,e.g,e.b),t):e}wH.DEFAULT_FORMATTER=oce;var sce=yH,lce=Cl.mergeEdge,cce=Jie,HP=tae,uce=wH,VP=uce.DEFAULT_FORMATTER;function uE(e){return+e}function dce(e){return e}var fce={boolean:function(e){return e.toLowerCase()==="true"},int:uE,long:uE,float:uE,double:uE,string:dce};function pce(e){for(var t=e.childNodes,n=[],r,i=0,a=t.length;i"u"?c[s]=i.textContent:c[l.name]=l.cast(i.textContent);for(s in t)s in c||(c[s]=t[s]);return c}var mce=function(t,n){return function(i,a,o){o=o||{};var s=o.addMissingNodes===!0,l,c=a;if(!sce(i))throw new Error("graphology-graphml/parser: invalid Graph constructor.");if(typeof a=="string"&&(c=new t().parseFromString(a,"application/xml")),!(c instanceof n))throw new Error("graphology-gexf/parser: source should either be a XML document or a string.");var u=c.getElementsByTagName("graph")[0],f=pce(u),p=c.getElementsByTagName("key"),m=c.getElementsByTagName("node"),v=c.getElementsByTagName("edge"),_=u.getAttribute("edgedefault")||"undirected",E=gce(p),S=new i({type:_}),b=u.getAttribute("id");b&&S.setAttribute("id",b);var T=c.createElement("graph");f.forEach(function(J){T.appendChild(J)});var C=$C(E.models.graph,E.defaults.graph,T);S.mergeAttributes(C);var R,O,N,L,I;for(R=0,O=m.length;R1&&arguments[1]!==void 0?arguments[1]:{};this.init(t,n)}init(t){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};this.prefix=n.prefix||"i18next:",this.logger=t||vce,this.options=n,this.debug=n.debug}log(){for(var t=arguments.length,n=new Array(t),r=0;r{this.observers[r]||(this.observers[r]=new Map);const i=this.observers[r].get(n)||0;this.observers[r].set(n,i+1)}),this}off(t,n){if(this.observers[t]){if(!n){delete this.observers[t];return}this.observers[t].delete(n)}}emit(t){for(var n=arguments.length,r=new Array(n>1?n-1:0),i=1;i{let[s,l]=o;for(let c=0;c{let[s,l]=o;for(let c=0;c{e=r,t=i});return n.resolve=e,n.reject=t,n}function qP(e){return e==null?"":""+e}function Ece(e,t,n){e.forEach(r=>{t[r]&&(n[r]=t[r])})}const bce=/###/g;function ih(e,t,n){function r(s){return s&&s.indexOf("###")>-1?s.replace(bce,"."):s}function i(){return!e||typeof e=="string"}const a=typeof t!="string"?t:t.split(".");let o=0;for(;o":">",'"':""","'":"'","/":"/"};function Cce(e){return typeof e=="string"?e.replace(/[&<>"'\/]/g,t=>Tce[t]):e}class Rce{constructor(t){this.capacity=t,this.regExpMap=new Map,this.regExpQueue=[]}getRegExp(t){const n=this.regExpMap.get(t);if(n!==void 0)return n;const r=new RegExp(t);return this.regExpQueue.length===this.capacity&&this.regExpMap.delete(this.regExpQueue.shift()),this.regExpMap.set(t,r),this.regExpQueue.push(t),r}}const Nce=[" ",",","?","!",";"],Ace=new Rce(20);function wce(e,t,n){t=t||"",n=n||"";const r=Nce.filter(o=>t.indexOf(o)<0&&n.indexOf(o)<0);if(r.length===0)return!0;const i=Ace.getRegExp(`(${r.map(o=>o==="?"?"\\?":o).join("|")})`);let a=!i.test(e);if(!a){const o=e.indexOf(n);o>0&&!i.test(e.substring(0,o))&&(a=!0)}return a}function kO(e,t){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:".";if(!e)return;if(e[t])return e[t];const r=t.split(n);let i=e;for(let a=0;a-1&&l0?e.replace("_","-"):e}class jP extends dy{constructor(t){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{ns:["translation"],defaultNS:"translation"};super(),this.data=t||{},this.options=n,this.options.keySeparator===void 0&&(this.options.keySeparator="."),this.options.ignoreJSONStructure===void 0&&(this.options.ignoreJSONStructure=!0)}addNamespaces(t){this.options.ns.indexOf(t)<0&&this.options.ns.push(t)}removeNamespaces(t){const n=this.options.ns.indexOf(t);n>-1&&this.options.ns.splice(n,1)}getResource(t,n,r){let i=arguments.length>3&&arguments[3]!==void 0?arguments[3]:{};const a=i.keySeparator!==void 0?i.keySeparator:this.options.keySeparator,o=i.ignoreJSONStructure!==void 0?i.ignoreJSONStructure:this.options.ignoreJSONStructure;let s;t.indexOf(".")>-1?s=t.split("."):(s=[t,n],r&&(Array.isArray(r)?s.push(...r):typeof r=="string"&&a?s.push(...r.split(a)):s.push(r)));const l=Hb(this.data,s);return!l&&!n&&!r&&t.indexOf(".")>-1&&(t=s[0],n=s[1],r=s.slice(2).join(".")),l||!o||typeof r!="string"?l:kO(this.data&&this.data[t]&&this.data[t][n],r,a)}addResource(t,n,r,i){let a=arguments.length>4&&arguments[4]!==void 0?arguments[4]:{silent:!1};const o=a.keySeparator!==void 0?a.keySeparator:this.options.keySeparator;let s=[t,n];r&&(s=s.concat(o?r.split(o):r)),t.indexOf(".")>-1&&(s=t.split("."),i=n,n=s[1]),this.addNamespaces(n),YP(this.data,s,i),a.silent||this.emit("added",t,n,r,i)}addResources(t,n,r){let i=arguments.length>3&&arguments[3]!==void 0?arguments[3]:{silent:!1};for(const a in r)(typeof r[a]=="string"||Array.isArray(r[a]))&&this.addResource(t,n,a,r[a],{silent:!0});i.silent||this.emit("added",t,n,r)}addResourceBundle(t,n,r,i,a){let o=arguments.length>5&&arguments[5]!==void 0?arguments[5]:{silent:!1,skipCopy:!1},s=[t,n];t.indexOf(".")>-1&&(s=t.split("."),i=r,r=n,n=s[1]),this.addNamespaces(n);let l=Hb(this.data,s)||{};o.skipCopy||(r=JSON.parse(JSON.stringify(r))),i?OH(l,r,a):l={...l,...r},YP(this.data,s,l),o.silent||this.emit("added",t,n,r)}removeResourceBundle(t,n){this.hasResourceBundle(t,n)&&delete this.data[t][n],this.removeNamespaces(n),this.emit("removed",t,n)}hasResourceBundle(t,n){return this.getResource(t,n)!==void 0}getResourceBundle(t,n){return n||(n=this.options.defaultNS),this.options.compatibilityAPI==="v1"?{...this.getResource(t,n)}:this.getResource(t,n)}getDataByLanguage(t){return this.data[t]}hasLanguageSomeTranslations(t){const n=this.getDataByLanguage(t);return!!(n&&Object.keys(n)||[]).find(i=>n[i]&&Object.keys(n[i]).length>0)}toJSON(){return this.data}}var xH={processors:{},addPostProcessor(e){this.processors[e.name]=e},handle(e,t,n,r,i){return e.forEach(a=>{this.processors[a]&&(t=this.processors[a].process(t,n,r,i))}),t}};const WP={};class qb extends dy{constructor(t){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};super(),Ece(["resourceStore","languageUtils","pluralResolver","interpolator","backendConnector","i18nFormat","utils"],t,this),this.options=n,this.options.keySeparator===void 0&&(this.options.keySeparator="."),this.logger=ms.create("translator")}changeLanguage(t){t&&(this.language=t)}exists(t){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{interpolation:{}};if(t==null)return!1;const r=this.resolve(t,n);return r&&r.res!==void 0}extractFromKey(t,n){let r=n.nsSeparator!==void 0?n.nsSeparator:this.options.nsSeparator;r===void 0&&(r=":");const i=n.keySeparator!==void 0?n.keySeparator:this.options.keySeparator;let a=n.ns||this.options.defaultNS||[];const o=r&&t.indexOf(r)>-1,s=!this.options.userDefinedKeySeparator&&!n.keySeparator&&!this.options.userDefinedNsSeparator&&!n.nsSeparator&&!wce(t,r,i);if(o&&!s){const l=t.match(this.interpolator.nestingRegexp);if(l&&l.length>0)return{key:t,namespaces:a};const c=t.split(r);(r!==i||r===i&&this.options.ns.indexOf(c[0])>-1)&&(a=c.shift()),t=c.join(i)}return typeof a=="string"&&(a=[a]),{key:t,namespaces:a}}translate(t,n,r){if(typeof n!="object"&&this.options.overloadTranslationOptionHandler&&(n=this.options.overloadTranslationOptionHandler(arguments)),typeof n=="object"&&(n={...n}),n||(n={}),t==null)return"";Array.isArray(t)||(t=[String(t)]);const i=n.returnDetails!==void 0?n.returnDetails:this.options.returnDetails,a=n.keySeparator!==void 0?n.keySeparator:this.options.keySeparator,{key:o,namespaces:s}=this.extractFromKey(t[t.length-1],n),l=s[s.length-1],c=n.lng||this.language,u=n.appendNamespaceToCIMode||this.options.appendNamespaceToCIMode;if(c&&c.toLowerCase()==="cimode"){if(u){const C=n.nsSeparator||this.options.nsSeparator;return i?{res:`${l}${C}${o}`,usedKey:o,exactUsedKey:o,usedLng:c,usedNS:l,usedParams:this.getUsedParamsDetails(n)}:`${l}${C}${o}`}return i?{res:o,usedKey:o,exactUsedKey:o,usedLng:c,usedNS:l,usedParams:this.getUsedParamsDetails(n)}:o}const f=this.resolve(t,n);let p=f&&f.res;const m=f&&f.usedKey||o,v=f&&f.exactUsedKey||o,_=Object.prototype.toString.apply(p),E=["[object Number]","[object Function]","[object RegExp]"],S=n.joinArrays!==void 0?n.joinArrays:this.options.joinArrays,b=!this.i18nFormat||this.i18nFormat.handleAsObject;if(b&&p&&(typeof p!="string"&&typeof p!="boolean"&&typeof p!="number")&&E.indexOf(_)<0&&!(typeof S=="string"&&Array.isArray(p))){if(!n.returnObjects&&!this.options.returnObjects){this.options.returnedObjectHandler||this.logger.warn("accessing an object - but returnObjects options is not enabled!");const C=this.options.returnedObjectHandler?this.options.returnedObjectHandler(m,p,{...n,ns:s}):`key '${o} (${this.language})' returned an object instead of string.`;return i?(f.res=C,f.usedParams=this.getUsedParamsDetails(n),f):C}if(a){const C=Array.isArray(p),R=C?[]:{},O=C?v:m;for(const N in p)if(Object.prototype.hasOwnProperty.call(p,N)){const L=`${O}${a}${N}`;R[N]=this.translate(L,{...n,joinArrays:!1,ns:s}),R[N]===L&&(R[N]=p[N])}p=R}}else if(b&&typeof S=="string"&&Array.isArray(p))p=p.join(S),p&&(p=this.extendTranslation(p,t,n,r));else{let C=!1,R=!1;const O=n.count!==void 0&&typeof n.count!="string",N=qb.hasDefaultValue(n),L=O?this.pluralResolver.getSuffix(c,n.count,n):"",I=n.ordinal&&O?this.pluralResolver.getSuffix(c,n.count,{ordinal:!1}):"",F=O&&!n.ordinal&&n.count===0&&this.pluralResolver.shouldUseIntlApi(),ee=F&&n[`defaultValue${this.options.pluralSeparator}zero`]||n[`defaultValue${L}`]||n[`defaultValue${I}`]||n.defaultValue;!this.isValidLookup(p)&&N&&(C=!0,p=ee),this.isValidLookup(p)||(R=!0,p=o);const K=(n.missingKeyNoValueFallbackToKey||this.options.missingKeyNoValueFallbackToKey)&&R?void 0:p,J=N&&ee!==p&&this.options.updateMissing;if(R||C||J){if(this.logger.log(J?"updateKey":"missingKey",c,l,o,J?ee:p),a){const M=this.resolve(o,{...n,keySeparator:!1});M&&M.res&&this.logger.warn("Seems the loaded translations were in flat JSON format instead of nested. Either set keySeparator: false on init or make sure your translations are published in nested format.")}let te=[];const $=this.languageUtils.getFallbackCodes(this.options.fallbackLng,n.lng||this.language);if(this.options.saveMissingTo==="fallback"&&$&&$[0])for(let M=0;M<$.length;M++)te.push($[M]);else this.options.saveMissingTo==="all"?te=this.languageUtils.toResolveHierarchy(n.lng||this.language):te.push(n.lng||this.language);const q=(M,ie,se)=>{const ne=N&&se!==p?se:K;this.options.missingKeyHandler?this.options.missingKeyHandler(M,l,ie,ne,J,n):this.backendConnector&&this.backendConnector.saveMissing&&this.backendConnector.saveMissing(M,l,ie,ne,J,n),this.emit("missingKey",M,l,ie,p)};this.options.saveMissing&&(this.options.saveMissingPlurals&&O?te.forEach(M=>{const ie=this.pluralResolver.getSuffixes(M,n);F&&n[`defaultValue${this.options.pluralSeparator}zero`]&&ie.indexOf(`${this.options.pluralSeparator}zero`)<0&&ie.push(`${this.options.pluralSeparator}zero`),ie.forEach(se=>{q([M],o+se,n[`defaultValue${se}`]||ee)})}):q(te,o,ee))}p=this.extendTranslation(p,t,n,f,r),R&&p===o&&this.options.appendNamespaceToMissingKey&&(p=`${l}:${o}`),(R||C)&&this.options.parseMissingKeyHandler&&(this.options.compatibilityAPI!=="v1"?p=this.options.parseMissingKeyHandler(this.options.appendNamespaceToMissingKey?`${l}:${o}`:o,C?p:void 0):p=this.options.parseMissingKeyHandler(p))}return i?(f.res=p,f.usedParams=this.getUsedParamsDetails(n),f):p}extendTranslation(t,n,r,i,a){var o=this;if(this.i18nFormat&&this.i18nFormat.parse)t=this.i18nFormat.parse(t,{...this.options.interpolation.defaultVariables,...r},r.lng||this.language||i.usedLng,i.usedNS,i.usedKey,{resolved:i});else if(!r.skipInterpolation){r.interpolation&&this.interpolator.init({...r,interpolation:{...this.options.interpolation,...r.interpolation}});const c=typeof t=="string"&&(r&&r.interpolation&&r.interpolation.skipOnVariables!==void 0?r.interpolation.skipOnVariables:this.options.interpolation.skipOnVariables);let u;if(c){const p=t.match(this.interpolator.nestingRegexp);u=p&&p.length}let f=r.replace&&typeof r.replace!="string"?r.replace:r;if(this.options.interpolation.defaultVariables&&(f={...this.options.interpolation.defaultVariables,...f}),t=this.interpolator.interpolate(t,f,r.lng||this.language,r),c){const p=t.match(this.interpolator.nestingRegexp),m=p&&p.length;u1&&arguments[1]!==void 0?arguments[1]:{},r,i,a,o,s;return typeof t=="string"&&(t=[t]),t.forEach(l=>{if(this.isValidLookup(r))return;const c=this.extractFromKey(l,n),u=c.key;i=u;let f=c.namespaces;this.options.fallbackNS&&(f=f.concat(this.options.fallbackNS));const p=n.count!==void 0&&typeof n.count!="string",m=p&&!n.ordinal&&n.count===0&&this.pluralResolver.shouldUseIntlApi(),v=n.context!==void 0&&(typeof n.context=="string"||typeof n.context=="number")&&n.context!=="",_=n.lngs?n.lngs:this.languageUtils.toResolveHierarchy(n.lng||this.language,n.fallbackLng);f.forEach(E=>{this.isValidLookup(r)||(s=E,!WP[`${_[0]}-${E}`]&&this.utils&&this.utils.hasLoadedNamespace&&!this.utils.hasLoadedNamespace(s)&&(WP[`${_[0]}-${E}`]=!0,this.logger.warn(`key "${i}" for languages "${_.join(", ")}" won't get resolved as namespace "${s}" was not yet loaded`,"This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!")),_.forEach(S=>{if(this.isValidLookup(r))return;o=S;const b=[u];if(this.i18nFormat&&this.i18nFormat.addLookupKeys)this.i18nFormat.addLookupKeys(b,u,S,E,n);else{let C;p&&(C=this.pluralResolver.getSuffix(S,n.count,n));const R=`${this.options.pluralSeparator}zero`,O=`${this.options.pluralSeparator}ordinal${this.options.pluralSeparator}`;if(p&&(b.push(u+C),n.ordinal&&C.indexOf(O)===0&&b.push(u+C.replace(O,this.options.pluralSeparator)),m&&b.push(u+R)),v){const N=`${u}${this.options.contextSeparator}${n.context}`;b.push(N),p&&(b.push(N+C),n.ordinal&&C.indexOf(O)===0&&b.push(N+C.replace(O,this.options.pluralSeparator)),m&&b.push(N+R))}}let T;for(;T=b.pop();)this.isValidLookup(r)||(a=T,r=this.getResource(S,E,T,n))}))})}),{res:r,usedKey:i,exactUsedKey:a,usedLng:o,usedNS:s}}isValidLookup(t){return t!==void 0&&!(!this.options.returnNull&&t===null)&&!(!this.options.returnEmptyString&&t==="")}getResource(t,n,r){let i=arguments.length>3&&arguments[3]!==void 0?arguments[3]:{};return this.i18nFormat&&this.i18nFormat.getResource?this.i18nFormat.getResource(t,n,r,i):this.resourceStore.getResource(t,n,r,i)}getUsedParamsDetails(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};const n=["defaultValue","ordinal","context","replace","lng","lngs","fallbackLng","ns","keySeparator","nsSeparator","returnObjects","returnDetails","joinArrays","postProcess","interpolation"],r=t.replace&&typeof t.replace!="string";let i=r?t.replace:t;if(r&&typeof t.count<"u"&&(i.count=t.count),this.options.interpolation.defaultVariables&&(i={...this.options.interpolation.defaultVariables,...i}),!r){i={...i};for(const a of n)delete i[a]}return i}static hasDefaultValue(t){const n="defaultValue";for(const r in t)if(Object.prototype.hasOwnProperty.call(t,r)&&n===r.substring(0,n.length)&&t[r]!==void 0)return!0;return!1}}function zC(e){return e.charAt(0).toUpperCase()+e.slice(1)}class KP{constructor(t){this.options=t,this.supportedLngs=this.options.supportedLngs||!1,this.logger=ms.create("languageUtils")}getScriptPartFromCode(t){if(t=Vb(t),!t||t.indexOf("-")<0)return null;const n=t.split("-");return n.length===2||(n.pop(),n[n.length-1].toLowerCase()==="x")?null:this.formatLanguageCode(n.join("-"))}getLanguagePartFromCode(t){if(t=Vb(t),!t||t.indexOf("-")<0)return t;const n=t.split("-");return this.formatLanguageCode(n[0])}formatLanguageCode(t){if(typeof t=="string"&&t.indexOf("-")>-1){const n=["hans","hant","latn","cyrl","cans","mong","arab"];let r=t.split("-");return this.options.lowerCaseLng?r=r.map(i=>i.toLowerCase()):r.length===2?(r[0]=r[0].toLowerCase(),r[1]=r[1].toUpperCase(),n.indexOf(r[1].toLowerCase())>-1&&(r[1]=zC(r[1].toLowerCase()))):r.length===3&&(r[0]=r[0].toLowerCase(),r[1].length===2&&(r[1]=r[1].toUpperCase()),r[0]!=="sgn"&&r[2].length===2&&(r[2]=r[2].toUpperCase()),n.indexOf(r[1].toLowerCase())>-1&&(r[1]=zC(r[1].toLowerCase())),n.indexOf(r[2].toLowerCase())>-1&&(r[2]=zC(r[2].toLowerCase()))),r.join("-")}return this.options.cleanCode||this.options.lowerCaseLng?t.toLowerCase():t}isSupportedCode(t){return(this.options.load==="languageOnly"||this.options.nonExplicitSupportedLngs)&&(t=this.getLanguagePartFromCode(t)),!this.supportedLngs||!this.supportedLngs.length||this.supportedLngs.indexOf(t)>-1}getBestMatchFromCodes(t){if(!t)return null;let n;return t.forEach(r=>{if(n)return;const i=this.formatLanguageCode(r);(!this.options.supportedLngs||this.isSupportedCode(i))&&(n=i)}),!n&&this.options.supportedLngs&&t.forEach(r=>{if(n)return;const i=this.getLanguagePartFromCode(r);if(this.isSupportedCode(i))return n=i;n=this.options.supportedLngs.find(a=>{if(a===i)return a;if(!(a.indexOf("-")<0&&i.indexOf("-")<0)&&(a.indexOf("-")>0&&i.indexOf("-")<0&&a.substring(0,a.indexOf("-"))===i||a.indexOf(i)===0&&i.length>1))return a})}),n||(n=this.getFallbackCodes(this.options.fallbackLng)[0]),n}getFallbackCodes(t,n){if(!t)return[];if(typeof t=="function"&&(t=t(n)),typeof t=="string"&&(t=[t]),Array.isArray(t))return t;if(!n)return t.default||[];let r=t[n];return r||(r=t[this.getScriptPartFromCode(n)]),r||(r=t[this.formatLanguageCode(n)]),r||(r=t[this.getLanguagePartFromCode(n)]),r||(r=t.default),r||[]}toResolveHierarchy(t,n){const r=this.getFallbackCodes(n||this.options.fallbackLng||[],t),i=[],a=o=>{o&&(this.isSupportedCode(o)?i.push(o):this.logger.warn(`rejecting language code not found in supportedLngs: ${o}`))};return typeof t=="string"&&(t.indexOf("-")>-1||t.indexOf("_")>-1)?(this.options.load!=="languageOnly"&&a(this.formatLanguageCode(t)),this.options.load!=="languageOnly"&&this.options.load!=="currentOnly"&&a(this.getScriptPartFromCode(t)),this.options.load!=="currentOnly"&&a(this.getLanguagePartFromCode(t))):typeof t=="string"&&a(this.formatLanguageCode(t)),r.forEach(o=>{i.indexOf(o)<0&&a(this.formatLanguageCode(o))}),i}}let Oce=[{lngs:["ach","ak","am","arn","br","fil","gun","ln","mfe","mg","mi","oc","pt","pt-BR","tg","tl","ti","tr","uz","wa"],nr:[1,2],fc:1},{lngs:["af","an","ast","az","bg","bn","ca","da","de","dev","el","en","eo","es","et","eu","fi","fo","fur","fy","gl","gu","ha","hi","hu","hy","ia","it","kk","kn","ku","lb","mai","ml","mn","mr","nah","nap","nb","ne","nl","nn","no","nso","pa","pap","pms","ps","pt-PT","rm","sco","se","si","so","son","sq","sv","sw","ta","te","tk","ur","yo"],nr:[1,2],fc:2},{lngs:["ay","bo","cgg","fa","ht","id","ja","jbo","ka","km","ko","ky","lo","ms","sah","su","th","tt","ug","vi","wo","zh"],nr:[1],fc:3},{lngs:["be","bs","cnr","dz","hr","ru","sr","uk"],nr:[1,2,5],fc:4},{lngs:["ar"],nr:[0,1,2,3,11,100],fc:5},{lngs:["cs","sk"],nr:[1,2,5],fc:6},{lngs:["csb","pl"],nr:[1,2,5],fc:7},{lngs:["cy"],nr:[1,2,3,8],fc:8},{lngs:["fr"],nr:[1,2],fc:9},{lngs:["ga"],nr:[1,2,3,7,11],fc:10},{lngs:["gd"],nr:[1,2,3,20],fc:11},{lngs:["is"],nr:[1,2],fc:12},{lngs:["jv"],nr:[0,1],fc:13},{lngs:["kw"],nr:[1,2,3,4],fc:14},{lngs:["lt"],nr:[1,2,10],fc:15},{lngs:["lv"],nr:[1,2,0],fc:16},{lngs:["mk"],nr:[1,2],fc:17},{lngs:["mnk"],nr:[0,1,2],fc:18},{lngs:["mt"],nr:[1,2,11,20],fc:19},{lngs:["or"],nr:[2,1],fc:2},{lngs:["ro"],nr:[1,2,20],fc:20},{lngs:["sl"],nr:[5,1,2,3],fc:21},{lngs:["he","iw"],nr:[1,2,20,21],fc:22}],xce={1:function(e){return+(e>1)},2:function(e){return+(e!=1)},3:function(e){return 0},4:function(e){return e%10==1&&e%100!=11?0:e%10>=2&&e%10<=4&&(e%100<10||e%100>=20)?1:2},5:function(e){return e==0?0:e==1?1:e==2?2:e%100>=3&&e%100<=10?3:e%100>=11?4:5},6:function(e){return e==1?0:e>=2&&e<=4?1:2},7:function(e){return e==1?0:e%10>=2&&e%10<=4&&(e%100<10||e%100>=20)?1:2},8:function(e){return e==1?0:e==2?1:e!=8&&e!=11?2:3},9:function(e){return+(e>=2)},10:function(e){return e==1?0:e==2?1:e<7?2:e<11?3:4},11:function(e){return e==1||e==11?0:e==2||e==12?1:e>2&&e<20?2:3},12:function(e){return+(e%10!=1||e%100==11)},13:function(e){return+(e!==0)},14:function(e){return e==1?0:e==2?1:e==3?2:3},15:function(e){return e%10==1&&e%100!=11?0:e%10>=2&&(e%100<10||e%100>=20)?1:2},16:function(e){return e%10==1&&e%100!=11?0:e!==0?1:2},17:function(e){return e==1||e%10==1&&e%100!=11?0:1},18:function(e){return e==0?0:e==1?1:2},19:function(e){return e==1?0:e==0||e%100>1&&e%100<11?1:e%100>10&&e%100<20?2:3},20:function(e){return e==1?0:e==0||e%100>0&&e%100<20?1:2},21:function(e){return e%100==1?1:e%100==2?2:e%100==3||e%100==4?3:0},22:function(e){return e==1?0:e==2?1:(e<0||e>10)&&e%10==0?2:3}};const Dce=["v1","v2","v3"],Ice=["v4"],QP={zero:0,one:1,two:2,few:3,many:4,other:5};function Mce(){const e={};return Oce.forEach(t=>{t.lngs.forEach(n=>{e[n]={numbers:t.nr,plurals:xce[t.fc]}})}),e}class Lce{constructor(t){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};this.languageUtils=t,this.options=n,this.logger=ms.create("pluralResolver"),(!this.options.compatibilityJSON||Ice.includes(this.options.compatibilityJSON))&&(typeof Intl>"u"||!Intl.PluralRules)&&(this.options.compatibilityJSON="v3",this.logger.error("Your environment seems not to be Intl API compatible, use an Intl.PluralRules polyfill. Will fallback to the compatibilityJSON v3 format handling.")),this.rules=Mce()}addRule(t,n){this.rules[t]=n}getRule(t){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};if(this.shouldUseIntlApi())try{return new Intl.PluralRules(Vb(t==="dev"?"en":t),{type:n.ordinal?"ordinal":"cardinal"})}catch{return}return this.rules[t]||this.rules[this.languageUtils.getLanguagePartFromCode(t)]}needsPlural(t){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};const r=this.getRule(t,n);return this.shouldUseIntlApi()?r&&r.resolvedOptions().pluralCategories.length>1:r&&r.numbers.length>1}getPluralFormsOfKey(t,n){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};return this.getSuffixes(t,r).map(i=>`${n}${i}`)}getSuffixes(t){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};const r=this.getRule(t,n);return r?this.shouldUseIntlApi()?r.resolvedOptions().pluralCategories.sort((i,a)=>QP[i]-QP[a]).map(i=>`${this.options.prepend}${n.ordinal?`ordinal${this.options.prepend}`:""}${i}`):r.numbers.map(i=>this.getSuffix(t,i,n)):[]}getSuffix(t,n){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};const i=this.getRule(t,r);return i?this.shouldUseIntlApi()?`${this.options.prepend}${r.ordinal?`ordinal${this.options.prepend}`:""}${i.select(n)}`:this.getSuffixRetroCompatible(i,n):(this.logger.warn(`no plural rule found for: ${t}`),"")}getSuffixRetroCompatible(t,n){const r=t.noAbs?t.plurals(n):t.plurals(Math.abs(n));let i=t.numbers[r];this.options.simplifyPluralSuffix&&t.numbers.length===2&&t.numbers[0]===1&&(i===2?i="plural":i===1&&(i=""));const a=()=>this.options.prepend&&i.toString()?this.options.prepend+i.toString():i.toString();return this.options.compatibilityJSON==="v1"?i===1?"":typeof i=="number"?`_plural_${i.toString()}`:a():this.options.compatibilityJSON==="v2"||this.options.simplifyPluralSuffix&&t.numbers.length===2&&t.numbers[0]===1?a():this.options.prepend&&r.toString()?this.options.prepend+r.toString():r.toString()}shouldUseIntlApi(){return!Dce.includes(this.options.compatibilityJSON)}}function XP(e,t,n){let r=arguments.length>3&&arguments[3]!==void 0?arguments[3]:".",i=arguments.length>4&&arguments[4]!==void 0?arguments[4]:!0,a=yce(e,t,n);return!a&&i&&typeof n=="string"&&(a=kO(e,n,r),a===void 0&&(a=kO(t,n,r))),a}class kce{constructor(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};this.logger=ms.create("interpolator"),this.options=t,this.format=t.interpolation&&t.interpolation.format||(n=>n),this.init(t)}init(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};t.interpolation||(t.interpolation={escapeValue:!0});const{escape:n,escapeValue:r,useRawValueToEscape:i,prefix:a,prefixEscaped:o,suffix:s,suffixEscaped:l,formatSeparator:c,unescapeSuffix:u,unescapePrefix:f,nestingPrefix:p,nestingPrefixEscaped:m,nestingSuffix:v,nestingSuffixEscaped:_,nestingOptionsSeparator:E,maxReplaces:S,alwaysFormat:b}=t.interpolation;this.escape=n!==void 0?n:Cce,this.escapeValue=r!==void 0?r:!0,this.useRawValueToEscape=i!==void 0?i:!1,this.prefix=a?uf(a):o||"{{",this.suffix=s?uf(s):l||"}}",this.formatSeparator=c||",",this.unescapePrefix=u?"":f||"-",this.unescapeSuffix=this.unescapePrefix?"":u||"",this.nestingPrefix=p?uf(p):m||uf("$t("),this.nestingSuffix=v?uf(v):_||uf(")"),this.nestingOptionsSeparator=E||",",this.maxReplaces=S||1e3,this.alwaysFormat=b!==void 0?b:!1,this.resetRegExp()}reset(){this.options&&this.init(this.options)}resetRegExp(){const t=(n,r)=>n&&n.source===r?(n.lastIndex=0,n):new RegExp(r,"g");this.regexp=t(this.regexp,`${this.prefix}(.+?)${this.suffix}`),this.regexpUnescape=t(this.regexpUnescape,`${this.prefix}${this.unescapePrefix}(.+?)${this.unescapeSuffix}${this.suffix}`),this.nestingRegexp=t(this.nestingRegexp,`${this.nestingPrefix}(.+?)${this.nestingSuffix}`)}interpolate(t,n,r,i){let a,o,s;const l=this.options&&this.options.interpolation&&this.options.interpolation.defaultVariables||{};function c(v){return v.replace(/\$/g,"$$$$")}const u=v=>{if(v.indexOf(this.formatSeparator)<0){const b=XP(n,l,v,this.options.keySeparator,this.options.ignoreJSONStructure);return this.alwaysFormat?this.format(b,void 0,r,{...i,...n,interpolationkey:v}):b}const _=v.split(this.formatSeparator),E=_.shift().trim(),S=_.join(this.formatSeparator).trim();return this.format(XP(n,l,E,this.options.keySeparator,this.options.ignoreJSONStructure),S,r,{...i,...n,interpolationkey:E})};this.resetRegExp();const f=i&&i.missingInterpolationHandler||this.options.missingInterpolationHandler,p=i&&i.interpolation&&i.interpolation.skipOnVariables!==void 0?i.interpolation.skipOnVariables:this.options.interpolation.skipOnVariables;return[{regex:this.regexpUnescape,safeValue:v=>c(v)},{regex:this.regexp,safeValue:v=>this.escapeValue?c(this.escape(v)):c(v)}].forEach(v=>{for(s=0;a=v.regex.exec(t);){const _=a[1].trim();if(o=u(_),o===void 0)if(typeof f=="function"){const S=f(t,a,i);o=typeof S=="string"?S:""}else if(i&&Object.prototype.hasOwnProperty.call(i,_))o="";else if(p){o=a[0];continue}else this.logger.warn(`missed to pass in variable ${_} for interpolating ${t}`),o="";else typeof o!="string"&&!this.useRawValueToEscape&&(o=qP(o));const E=v.safeValue(o);if(t=t.replace(a[0],E),p?(v.regex.lastIndex+=o.length,v.regex.lastIndex-=a[0].length):v.regex.lastIndex=0,s++,s>=this.maxReplaces)break}}),t}nest(t,n){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},i,a,o;function s(l,c){const u=this.nestingOptionsSeparator;if(l.indexOf(u)<0)return l;const f=l.split(new RegExp(`${u}[ ]*{`));let p=`{${f[1]}`;l=f[0],p=this.interpolate(p,o);const m=p.match(/'/g),v=p.match(/"/g);(m&&m.length%2===0&&!v||v.length%2!==0)&&(p=p.replace(/'/g,'"'));try{o=JSON.parse(p),c&&(o={...c,...o})}catch(_){return this.logger.warn(`failed parsing options string in nesting for key ${l}`,_),`${l}${u}${p}`}return o.defaultValue&&o.defaultValue.indexOf(this.prefix)>-1&&delete o.defaultValue,l}for(;i=this.nestingRegexp.exec(t);){let l=[];o={...r},o=o.replace&&typeof o.replace!="string"?o.replace:o,o.applyPostProcessor=!1,delete o.defaultValue;let c=!1;if(i[0].indexOf(this.formatSeparator)!==-1&&!/{.*}/.test(i[1])){const u=i[1].split(this.formatSeparator).map(f=>f.trim());i[1]=u.shift(),l=u,c=!0}if(a=n(s.call(this,i[1].trim(),o),o),a&&i[0]===t&&typeof a!="string")return a;typeof a!="string"&&(a=qP(a)),a||(this.logger.warn(`missed to resolve ${i[1]} for nesting ${t}`),a=""),c&&(a=l.reduce((u,f)=>this.format(u,f,r.lng,{...r,interpolationkey:i[1].trim()}),a.trim())),t=t.replace(i[0],a),this.regexp.lastIndex=0}return t}}function Pce(e){let t=e.toLowerCase().trim();const n={};if(e.indexOf("(")>-1){const r=e.split("(");t=r[0].toLowerCase().trim();const i=r[1].substring(0,r[1].length-1);t==="currency"&&i.indexOf(":")<0?n.currency||(n.currency=i.trim()):t==="relativetime"&&i.indexOf(":")<0?n.range||(n.range=i.trim()):i.split(";").forEach(o=>{if(o){const[s,...l]=o.split(":"),c=l.join(":").trim().replace(/^'+|'+$/g,""),u=s.trim();n[u]||(n[u]=c),c==="false"&&(n[u]=!1),c==="true"&&(n[u]=!0),isNaN(c)||(n[u]=parseInt(c,10))}})}return{formatName:t,formatOptions:n}}function df(e){const t={};return function(r,i,a){const o=i+JSON.stringify(a);let s=t[o];return s||(s=e(Vb(i),a),t[o]=s),s(r)}}class Fce{constructor(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};this.logger=ms.create("formatter"),this.options=t,this.formats={number:df((n,r)=>{const i=new Intl.NumberFormat(n,{...r});return a=>i.format(a)}),currency:df((n,r)=>{const i=new Intl.NumberFormat(n,{...r,style:"currency"});return a=>i.format(a)}),datetime:df((n,r)=>{const i=new Intl.DateTimeFormat(n,{...r});return a=>i.format(a)}),relativetime:df((n,r)=>{const i=new Intl.RelativeTimeFormat(n,{...r});return a=>i.format(a,r.range||"day")}),list:df((n,r)=>{const i=new Intl.ListFormat(n,{...r});return a=>i.format(a)})},this.init(t)}init(t){const r=(arguments.length>1&&arguments[1]!==void 0?arguments[1]:{interpolation:{}}).interpolation;this.formatSeparator=r.formatSeparator?r.formatSeparator:r.formatSeparator||","}add(t,n){this.formats[t.toLowerCase().trim()]=n}addCached(t,n){this.formats[t.toLowerCase().trim()]=df(n)}format(t,n,r){let i=arguments.length>3&&arguments[3]!==void 0?arguments[3]:{};return n.split(this.formatSeparator).reduce((s,l)=>{const{formatName:c,formatOptions:u}=Pce(l);if(this.formats[c]){let f=s;try{const p=i&&i.formatParams&&i.formatParams[i.interpolationkey]||{},m=p.locale||p.lng||i.locale||i.lng||r;f=this.formats[c](s,m,{...u,...i,...p})}catch(p){this.logger.warn(p)}return f}else this.logger.warn(`there was no format function for ${c}`);return s},t)}}function Uce(e,t){e.pending[t]!==void 0&&(delete e.pending[t],e.pendingCount--)}class Bce extends dy{constructor(t,n,r){let i=arguments.length>3&&arguments[3]!==void 0?arguments[3]:{};super(),this.backend=t,this.store=n,this.services=r,this.languageUtils=r.languageUtils,this.options=i,this.logger=ms.create("backendConnector"),this.waitingReads=[],this.maxParallelReads=i.maxParallelReads||10,this.readingCalls=0,this.maxRetries=i.maxRetries>=0?i.maxRetries:5,this.retryTimeout=i.retryTimeout>=1?i.retryTimeout:350,this.state={},this.queue=[],this.backend&&this.backend.init&&this.backend.init(r,i.backend,i)}queueLoad(t,n,r,i){const a={},o={},s={},l={};return t.forEach(c=>{let u=!0;n.forEach(f=>{const p=`${c}|${f}`;!r.reload&&this.store.hasResourceBundle(c,f)?this.state[p]=2:this.state[p]<0||(this.state[p]===1?o[p]===void 0&&(o[p]=!0):(this.state[p]=1,u=!1,o[p]===void 0&&(o[p]=!0),a[p]===void 0&&(a[p]=!0),l[f]===void 0&&(l[f]=!0)))}),u||(s[c]=!0)}),(Object.keys(a).length||Object.keys(o).length)&&this.queue.push({pending:o,pendingCount:Object.keys(o).length,loaded:{},errors:[],callback:i}),{toLoad:Object.keys(a),pending:Object.keys(o),toLoadLanguages:Object.keys(s),toLoadNamespaces:Object.keys(l)}}loaded(t,n,r){const i=t.split("|"),a=i[0],o=i[1];n&&this.emit("failedLoading",a,o,n),r&&this.store.addResourceBundle(a,o,r,void 0,void 0,{skipCopy:!0}),this.state[t]=n?-1:2;const s={};this.queue.forEach(l=>{Sce(l.loaded,[a],o),Uce(l,t),n&&l.errors.push(n),l.pendingCount===0&&!l.done&&(Object.keys(l.loaded).forEach(c=>{s[c]||(s[c]={});const u=l.loaded[c];u.length&&u.forEach(f=>{s[c][f]===void 0&&(s[c][f]=!0)})}),l.done=!0,l.errors.length?l.callback(l.errors):l.callback())}),this.emit("loaded",s),this.queue=this.queue.filter(l=>!l.done)}read(t,n,r){let i=arguments.length>3&&arguments[3]!==void 0?arguments[3]:0,a=arguments.length>4&&arguments[4]!==void 0?arguments[4]:this.retryTimeout,o=arguments.length>5?arguments[5]:void 0;if(!t.length)return o(null,{});if(this.readingCalls>=this.maxParallelReads){this.waitingReads.push({lng:t,ns:n,fcName:r,tried:i,wait:a,callback:o});return}this.readingCalls++;const s=(c,u)=>{if(this.readingCalls--,this.waitingReads.length>0){const f=this.waitingReads.shift();this.read(f.lng,f.ns,f.fcName,f.tried,f.wait,f.callback)}if(c&&u&&i{this.read.call(this,t,n,r,i+1,a*2,o)},a);return}o(c,u)},l=this.backend[r].bind(this.backend);if(l.length===2){try{const c=l(t,n);c&&typeof c.then=="function"?c.then(u=>s(null,u)).catch(s):s(null,c)}catch(c){s(c)}return}return l(t,n,s)}prepareLoading(t,n){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},i=arguments.length>3?arguments[3]:void 0;if(!this.backend)return this.logger.warn("No backend was added via i18next.use. Will not load resources."),i&&i();typeof t=="string"&&(t=this.languageUtils.toResolveHierarchy(t)),typeof n=="string"&&(n=[n]);const a=this.queueLoad(t,n,r,i);if(!a.toLoad.length)return a.pending.length||i(),null;a.toLoad.forEach(o=>{this.loadOne(o)})}load(t,n,r){this.prepareLoading(t,n,{},r)}reload(t,n,r){this.prepareLoading(t,n,{reload:!0},r)}loadOne(t){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"";const r=t.split("|"),i=r[0],a=r[1];this.read(i,a,"read",void 0,void 0,(o,s)=>{o&&this.logger.warn(`${n}loading namespace ${a} for language ${i} failed`,o),!o&&s&&this.logger.log(`${n}loaded namespace ${a} for language ${i}`,s),this.loaded(t,o,s)})}saveMissing(t,n,r,i,a){let o=arguments.length>5&&arguments[5]!==void 0?arguments[5]:{},s=arguments.length>6&&arguments[6]!==void 0?arguments[6]:()=>{};if(this.services.utils&&this.services.utils.hasLoadedNamespace&&!this.services.utils.hasLoadedNamespace(n)){this.logger.warn(`did not save key "${r}" as the namespace "${n}" was not yet loaded`,"This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!");return}if(!(r==null||r==="")){if(this.backend&&this.backend.create){const l={...o,isUpdate:a},c=this.backend.create.bind(this.backend);if(c.length<6)try{let u;c.length===5?u=c(t,n,r,i,l):u=c(t,n,r,i),u&&typeof u.then=="function"?u.then(f=>s(null,f)).catch(s):s(null,u)}catch(u){s(u)}else c(t,n,r,i,s,l)}!t||!t[0]||this.store.addResource(t[0],n,r,i)}}}function ZP(){return{debug:!1,initImmediate:!0,ns:["translation"],defaultNS:["translation"],fallbackLng:["dev"],fallbackNS:!1,supportedLngs:!1,nonExplicitSupportedLngs:!1,load:"all",preload:!1,simplifyPluralSuffix:!0,keySeparator:".",nsSeparator:":",pluralSeparator:"_",contextSeparator:"_",partialBundledLanguages:!1,saveMissing:!1,updateMissing:!1,saveMissingTo:"fallback",saveMissingPlurals:!0,missingKeyHandler:!1,missingInterpolationHandler:!1,postProcess:!1,postProcessPassResolved:!1,returnNull:!1,returnEmptyString:!0,returnObjects:!1,joinArrays:!1,returnedObjectHandler:!1,parseMissingKeyHandler:!1,appendNamespaceToMissingKey:!1,appendNamespaceToCIMode:!1,overloadTranslationOptionHandler:function(t){let n={};if(typeof t[1]=="object"&&(n=t[1]),typeof t[1]=="string"&&(n.defaultValue=t[1]),typeof t[2]=="string"&&(n.tDescription=t[2]),typeof t[2]=="object"||typeof t[3]=="object"){const r=t[3]||t[2];Object.keys(r).forEach(i=>{n[i]=r[i]})}return n},interpolation:{escapeValue:!0,format:e=>e,prefix:"{{",suffix:"}}",formatSeparator:",",unescapePrefix:"-",nestingPrefix:"$t(",nestingSuffix:")",nestingOptionsSeparator:",",maxReplaces:1e3,skipOnVariables:!0}}}function JP(e){return typeof e.ns=="string"&&(e.ns=[e.ns]),typeof e.fallbackLng=="string"&&(e.fallbackLng=[e.fallbackLng]),typeof e.fallbackNS=="string"&&(e.fallbackNS=[e.fallbackNS]),e.supportedLngs&&e.supportedLngs.indexOf("cimode")<0&&(e.supportedLngs=e.supportedLngs.concat(["cimode"])),e}function dE(){}function Gce(e){Object.getOwnPropertyNames(Object.getPrototypeOf(e)).forEach(n=>{typeof e[n]=="function"&&(e[n]=e[n].bind(e))})}let DH=class PO extends dy{constructor(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},n=arguments.length>1?arguments[1]:void 0;if(super(),this.options=JP(t),this.services={},this.logger=ms,this.modules={external:[]},Gce(this),n&&!this.isInitialized&&!t.isClone){if(!this.options.initImmediate)return this.init(t,n),this;setTimeout(()=>{this.init(t,n)},0)}}init(){var t=this;let n=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},r=arguments.length>1?arguments[1]:void 0;this.isInitializing=!0,typeof n=="function"&&(r=n,n={}),!n.defaultNS&&n.defaultNS!==!1&&n.ns&&(typeof n.ns=="string"?n.defaultNS=n.ns:n.ns.indexOf("translation")<0&&(n.defaultNS=n.ns[0]));const i=ZP();this.options={...i,...this.options,...JP(n)},this.options.compatibilityAPI!=="v1"&&(this.options.interpolation={...i.interpolation,...this.options.interpolation}),n.keySeparator!==void 0&&(this.options.userDefinedKeySeparator=n.keySeparator),n.nsSeparator!==void 0&&(this.options.userDefinedNsSeparator=n.nsSeparator);function a(u){return u?typeof u=="function"?new u:u:null}if(!this.options.isClone){this.modules.logger?ms.init(a(this.modules.logger),this.options):ms.init(null,this.options);let u;this.modules.formatter?u=this.modules.formatter:typeof Intl<"u"&&(u=Fce);const f=new KP(this.options);this.store=new jP(this.options.resources,this.options);const p=this.services;p.logger=ms,p.resourceStore=this.store,p.languageUtils=f,p.pluralResolver=new Lce(f,{prepend:this.options.pluralSeparator,compatibilityJSON:this.options.compatibilityJSON,simplifyPluralSuffix:this.options.simplifyPluralSuffix}),u&&(!this.options.interpolation.format||this.options.interpolation.format===i.interpolation.format)&&(p.formatter=a(u),p.formatter.init(p,this.options),this.options.interpolation.format=p.formatter.format.bind(p.formatter)),p.interpolator=new kce(this.options),p.utils={hasLoadedNamespace:this.hasLoadedNamespace.bind(this)},p.backendConnector=new Bce(a(this.modules.backend),p.resourceStore,p,this.options),p.backendConnector.on("*",function(m){for(var v=arguments.length,_=new Array(v>1?v-1:0),E=1;E1?v-1:0),E=1;E{m.init&&m.init(this)})}if(this.format=this.options.interpolation.format,r||(r=dE),this.options.fallbackLng&&!this.services.languageDetector&&!this.options.lng){const u=this.services.languageUtils.getFallbackCodes(this.options.fallbackLng);u.length>0&&u[0]!=="dev"&&(this.options.lng=u[0])}!this.services.languageDetector&&!this.options.lng&&this.logger.warn("init: no languageDetector is used and no lng is defined"),["getResource","hasResourceBundle","getResourceBundle","getDataByLanguage"].forEach(u=>{this[u]=function(){return t.store[u](...arguments)}}),["addResource","addResources","addResourceBundle","removeResourceBundle"].forEach(u=>{this[u]=function(){return t.store[u](...arguments),t}});const l=Tm(),c=()=>{const u=(f,p)=>{this.isInitializing=!1,this.isInitialized&&!this.initializedStoreOnce&&this.logger.warn("init: i18next is already initialized. You should call init just once!"),this.isInitialized=!0,this.options.isClone||this.logger.log("initialized",this.options),this.emit("initialized",this.options),l.resolve(p),r(f,p)};if(this.languages&&this.options.compatibilityAPI!=="v1"&&!this.isInitialized)return u(null,this.t.bind(this));this.changeLanguage(this.options.lng,u)};return this.options.resources||!this.options.initImmediate?c():setTimeout(c,0),l}loadResources(t){let r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:dE;const i=typeof t=="string"?t:this.language;if(typeof t=="function"&&(r=t),!this.options.resources||this.options.partialBundledLanguages){if(i&&i.toLowerCase()==="cimode"&&(!this.options.preload||this.options.preload.length===0))return r();const a=[],o=s=>{if(!s||s==="cimode")return;this.services.languageUtils.toResolveHierarchy(s).forEach(c=>{c!=="cimode"&&a.indexOf(c)<0&&a.push(c)})};i?o(i):this.services.languageUtils.getFallbackCodes(this.options.fallbackLng).forEach(l=>o(l)),this.options.preload&&this.options.preload.forEach(s=>o(s)),this.services.backendConnector.load(a,this.options.ns,s=>{!s&&!this.resolvedLanguage&&this.language&&this.setResolvedLanguage(this.language),r(s)})}else r(null)}reloadResources(t,n,r){const i=Tm();return t||(t=this.languages),n||(n=this.options.ns),r||(r=dE),this.services.backendConnector.reload(t,n,a=>{i.resolve(),r(a)}),i}use(t){if(!t)throw new Error("You are passing an undefined module! Please check the object you are passing to i18next.use()");if(!t.type)throw new Error("You are passing a wrong module! Please check the object you are passing to i18next.use()");return t.type==="backend"&&(this.modules.backend=t),(t.type==="logger"||t.log&&t.warn&&t.error)&&(this.modules.logger=t),t.type==="languageDetector"&&(this.modules.languageDetector=t),t.type==="i18nFormat"&&(this.modules.i18nFormat=t),t.type==="postProcessor"&&xH.addPostProcessor(t),t.type==="formatter"&&(this.modules.formatter=t),t.type==="3rdParty"&&this.modules.external.push(t),this}setResolvedLanguage(t){if(!(!t||!this.languages)&&!(["cimode","dev"].indexOf(t)>-1))for(let n=0;n-1)&&this.store.hasLanguageSomeTranslations(r)){this.resolvedLanguage=r;break}}}changeLanguage(t,n){var r=this;this.isLanguageChangingTo=t;const i=Tm();this.emit("languageChanging",t);const a=l=>{this.language=l,this.languages=this.services.languageUtils.toResolveHierarchy(l),this.resolvedLanguage=void 0,this.setResolvedLanguage(l)},o=(l,c)=>{c?(a(c),this.translator.changeLanguage(c),this.isLanguageChangingTo=void 0,this.emit("languageChanged",c),this.logger.log("languageChanged",c)):this.isLanguageChangingTo=void 0,i.resolve(function(){return r.t(...arguments)}),n&&n(l,function(){return r.t(...arguments)})},s=l=>{!t&&!l&&this.services.languageDetector&&(l=[]);const c=typeof l=="string"?l:this.services.languageUtils.getBestMatchFromCodes(l);c&&(this.language||a(c),this.translator.language||this.translator.changeLanguage(c),this.services.languageDetector&&this.services.languageDetector.cacheUserLanguage&&this.services.languageDetector.cacheUserLanguage(c)),this.loadResources(c,u=>{o(u,c)})};return!t&&this.services.languageDetector&&!this.services.languageDetector.async?s(this.services.languageDetector.detect()):!t&&this.services.languageDetector&&this.services.languageDetector.async?this.services.languageDetector.detect.length===0?this.services.languageDetector.detect().then(s):this.services.languageDetector.detect(s):s(t),i}getFixedT(t,n,r){var i=this;const a=function(o,s){let l;if(typeof s!="object"){for(var c=arguments.length,u=new Array(c>2?c-2:0),f=2;f`${l.keyPrefix}${p}${v}`):m=l.keyPrefix?`${l.keyPrefix}${p}${o}`:o,i.t(m,l)};return typeof t=="string"?a.lng=t:a.lngs=t,a.ns=n,a.keyPrefix=r,a}t(){return this.translator&&this.translator.translate(...arguments)}exists(){return this.translator&&this.translator.exists(...arguments)}setDefaultNamespace(t){this.options.defaultNS=t}hasLoadedNamespace(t){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};if(!this.isInitialized)return this.logger.warn("hasLoadedNamespace: i18next was not initialized",this.languages),!1;if(!this.languages||!this.languages.length)return this.logger.warn("hasLoadedNamespace: i18n.languages were undefined or empty",this.languages),!1;const r=n.lng||this.resolvedLanguage||this.languages[0],i=this.options?this.options.fallbackLng:!1,a=this.languages[this.languages.length-1];if(r.toLowerCase()==="cimode")return!0;const o=(s,l)=>{const c=this.services.backendConnector.state[`${s}|${l}`];return c===-1||c===2};if(n.precheck){const s=n.precheck(this,o);if(s!==void 0)return s}return!!(this.hasResourceBundle(r,t)||!this.services.backendConnector.backend||this.options.resources&&!this.options.partialBundledLanguages||o(r,t)&&(!i||o(a,t)))}loadNamespaces(t,n){const r=Tm();return this.options.ns?(typeof t=="string"&&(t=[t]),t.forEach(i=>{this.options.ns.indexOf(i)<0&&this.options.ns.push(i)}),this.loadResources(i=>{r.resolve(),n&&n(i)}),r):(n&&n(),Promise.resolve())}loadLanguages(t,n){const r=Tm();typeof t=="string"&&(t=[t]);const i=this.options.preload||[],a=t.filter(o=>i.indexOf(o)<0&&this.services.languageUtils.isSupportedCode(o));return a.length?(this.options.preload=i.concat(a),this.loadResources(o=>{r.resolve(),n&&n(o)}),r):(n&&n(),Promise.resolve())}dir(t){if(t||(t=this.resolvedLanguage||(this.languages&&this.languages.length>0?this.languages[0]:this.language)),!t)return"rtl";const n=["ar","shu","sqr","ssh","xaa","yhd","yud","aao","abh","abv","acm","acq","acw","acx","acy","adf","ads","aeb","aec","afb","ajp","apc","apd","arb","arq","ars","ary","arz","auz","avl","ayh","ayl","ayn","ayp","bbz","pga","he","iw","ps","pbt","pbu","pst","prp","prd","ug","ur","ydd","yds","yih","ji","yi","hbo","men","xmn","fa","jpr","peo","pes","prs","dv","sam","ckb"],r=this.services&&this.services.languageUtils||new KP(ZP());return n.indexOf(r.getLanguagePartFromCode(t))>-1||t.toLowerCase().indexOf("-arab")>1?"rtl":"ltr"}static createInstance(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},n=arguments.length>1?arguments[1]:void 0;return new PO(t,n)}cloneInstance(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:dE;const r=t.forkResourceStore;r&&delete t.forkResourceStore;const i={...this.options,...t,isClone:!0},a=new PO(i);return(t.debug!==void 0||t.prefix!==void 0)&&(a.logger=a.logger.clone(t)),["store","services","language"].forEach(s=>{a[s]=this[s]}),a.services={...this.services},a.services.utils={hasLoadedNamespace:a.hasLoadedNamespace.bind(a)},r&&(a.store=new jP(this.store.data,i),a.services.resourceStore=a.store),a.translator=new qb(a.services,i),a.translator.on("*",function(s){for(var l=arguments.length,c=new Array(l>1?l-1:0),u=1;u{if(t)for(const n in t)e[n]===void 0&&(e[n]=t[n])}),e}const eF=/^[\u0009\u0020-\u007e\u0080-\u00ff]+$/,Vce=(e,t,n)=>{const r=n||{};r.path=r.path||"/";const i=encodeURIComponent(t);let a=`${e}=${i}`;if(r.maxAge>0){const o=r.maxAge-0;if(Number.isNaN(o))throw new Error("maxAge should be a Number");a+=`; Max-Age=${Math.floor(o)}`}if(r.domain){if(!eF.test(r.domain))throw new TypeError("option domain is invalid");a+=`; Domain=${r.domain}`}if(r.path){if(!eF.test(r.path))throw new TypeError("option path is invalid");a+=`; Path=${r.path}`}if(r.expires){if(typeof r.expires.toUTCString!="function")throw new TypeError("option expires is invalid");a+=`; Expires=${r.expires.toUTCString()}`}if(r.httpOnly&&(a+="; HttpOnly"),r.secure&&(a+="; Secure"),r.sameSite)switch(typeof r.sameSite=="string"?r.sameSite.toLowerCase():r.sameSite){case!0:a+="; SameSite=Strict";break;case"lax":a+="; SameSite=Lax";break;case"strict":a+="; SameSite=Strict";break;case"none":a+="; SameSite=None";break;default:throw new TypeError("option sameSite is invalid")}return a},tF={create(e,t,n,r){let i=arguments.length>4&&arguments[4]!==void 0?arguments[4]:{path:"/",sameSite:"strict"};n&&(i.expires=new Date,i.expires.setTime(i.expires.getTime()+n*60*1e3)),r&&(i.domain=r),document.cookie=Vce(e,encodeURIComponent(t),i)},read(e){const t=`${e}=`,n=document.cookie.split(";");for(let r=0;r-1&&(i=window.location.hash.substring(window.location.hash.indexOf("?")));const o=i.substring(1).split("&");for(let s=0;s0&&o[s].substring(0,l)===t&&(n=o[s].substring(l+1))}}return n}};let Cm=null;const nF=()=>{if(Cm!==null)return Cm;try{Cm=window!=="undefined"&&window.localStorage!==null;const e="i18next.translate.boo";window.localStorage.setItem(e,"foo"),window.localStorage.removeItem(e)}catch{Cm=!1}return Cm};var jce={name:"localStorage",lookup(e){let{lookupLocalStorage:t}=e;if(t&&nF())return window.localStorage.getItem(t)||void 0},cacheUserLanguage(e,t){let{lookupLocalStorage:n}=t;n&&nF()&&window.localStorage.setItem(n,e)}};let Rm=null;const rF=()=>{if(Rm!==null)return Rm;try{Rm=window!=="undefined"&&window.sessionStorage!==null;const e="i18next.translate.boo";window.sessionStorage.setItem(e,"foo"),window.sessionStorage.removeItem(e)}catch{Rm=!1}return Rm};var Wce={name:"sessionStorage",lookup(e){let{lookupSessionStorage:t}=e;if(t&&rF())return window.sessionStorage.getItem(t)||void 0},cacheUserLanguage(e,t){let{lookupSessionStorage:n}=t;n&&rF()&&window.sessionStorage.setItem(n,e)}},Kce={name:"navigator",lookup(e){const t=[];if(typeof navigator<"u"){const{languages:n,userLanguage:r,language:i}=navigator;if(n)for(let a=0;a0?t:void 0}},Qce={name:"htmlTag",lookup(e){let{htmlTag:t}=e,n;const r=t||(typeof document<"u"?document.documentElement:null);return r&&typeof r.getAttribute=="function"&&(n=r.getAttribute("lang")),n}},Xce={name:"path",lookup(e){var i;let{lookupFromPathIndex:t}=e;if(typeof window>"u")return;const n=window.location.pathname.match(/\/([a-zA-Z-]*)/g);return Array.isArray(n)?(i=n[typeof t=="number"?t:0])==null?void 0:i.replace("/",""):void 0}},Zce={name:"subdomain",lookup(e){var i,a;let{lookupFromSubdomainIndex:t}=e;const n=typeof t=="number"?t+1:1,r=typeof window<"u"&&((a=(i=window.location)==null?void 0:i.hostname)==null?void 0:a.match(/^(\w{2,5})\.(([a-z0-9-]{1,63}\.[a-z]{2,6})|localhost)/i));if(r)return r[n]}};function Jce(){return{order:["querystring","cookie","localStorage","sessionStorage","navigator","htmlTag"],lookupQuerystring:"lng",lookupCookie:"i18next",lookupLocalStorage:"i18nextLng",lookupSessionStorage:"i18nextLng",caches:["localStorage"],excludeCacheFor:["cimode"],convertDetectedLanguage:e=>e}}class IH{constructor(t){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};this.type="languageDetector",this.detectors={},this.init(t,n)}init(t){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};this.services=t||{languageUtils:{}},this.options=Hce(n,this.options||{},Jce()),typeof this.options.convertDetectedLanguage=="string"&&this.options.convertDetectedLanguage.indexOf("15897")>-1&&(this.options.convertDetectedLanguage=i=>i.replace("-","_")),this.options.lookupFromUrlIndex&&(this.options.lookupFromPathIndex=this.options.lookupFromUrlIndex),this.i18nOptions=r,this.addDetector(qce),this.addDetector(Yce),this.addDetector(jce),this.addDetector(Wce),this.addDetector(Kce),this.addDetector(Qce),this.addDetector(Xce),this.addDetector(Zce)}addDetector(t){return this.detectors[t.name]=t,this}detect(t){t||(t=this.options.order);let n=[];return t.forEach(r=>{if(this.detectors[r]){let i=this.detectors[r].lookup(this.options);i&&typeof i=="string"&&(i=[i]),i&&(n=n.concat(i))}}),n=n.map(r=>this.options.convertDetectedLanguage(r)),this.services.languageUtils.getBestMatchFromCodes?n:n.length>0?n[0]:null}cacheUserLanguage(t,n){n||(n=this.options.caches),n&&(this.options.excludeCacheFor&&this.options.excludeCacheFor.indexOf(t)>-1||n.forEach(r=>{this.detectors[r]&&this.detectors[r].cacheUserLanguage(t,this.options)}))}}IH.type="languageDetector";const eue={title:"Welcome to Gephi Lite","disclaimer-1":"Gephi Lite is currently a work in progress.","disclaimer-2":"Feel free to check the GitHub project to see more about the upcoming features or to report bugs.",logo:"Gephi logo",open_recent:"Open recent",open_graph:"Open graph file",no_recent:"No remote file has been opened in that browser yet.",samples:"Samples"},tue={title:"Error",unknown:"An unknown error has occurred.",message:"Sorry, we are working to make gephi-lite better, but bugs still happened... It will help us if you can open an issue on github with a description of what you were doing.",retry:"Retry",report:"Report error",not_found:{title:"Page Not Found",subtitle:"The page you were looking for doesn't exist.",paragraph:"You may have mistyped the address or the page may have moved."},form:{required:"Field is required",unique:"Value must be unique, and a data with the same value already exist"},deprecated:{gexf_search_params:"The `gexf=` url params to open a graph file has been renamed as `file=` in version 0.4.0. Using gexf params is deprecated and might be removed in future version. Please use `file=` instead."}},nue={avatar_alt:"{{name}}'s avatar"},rue={open:{cloud:"Open graph from {{provider}}",remote:"Open remote graph",local:"Open local graph",new:"Create a new graph"},save:{default:"Save",cloud:"Save on {{provider}} as..."},download:{gexf:"Save graph locally","gexf-error":"An error occurred while generating GEXF file"}},iue={github:"GitHub"},aue={title:"GitHub authentication",description:"You can log into GitHub from Gephi Lite, to save and load graph files directly as GitHub Gists.",logged_as:"You are currently logged into GitHub as {{username}}.",select_ui_language:"Select application language"},oue={unauth_success:"Unauthentication successful",sign_out:"Sign-out from GitHub",sign_in:"Sign-in to GitHub"},sue={cannot_restore:"Your graph cannot be restored.",restore_successful:"Your work graph has been restored."},lue={title:"Data overview"},cue={nodes_zero:"No selected node",nodes_one:"One selected node",nodes:"{{count}} selected nodes",edges_zero:"No selected edge",edges_one:"One selected edge",edges:"{{count}} selected edges",visible_nodes_zero:"No visible selected node",visible_nodes_one:"One visible selected node",visible_nodes:"{{count}} visible selected nodes",visible_edges_zero:"No visible selected edge",visible_edges_one:"One visible selected edge",visible_edges:"{{count}} visible selected edges",hidden_nodes_one:"One hidden selected node",hidden_nodes:"{{count}} hidden selected nodes",hidden_edges_one:"One hidden selected edge",hidden_edges:"{{count}} hidden selected edges",select_all:"Select all",unselect_all:"Unselect all",unselect_all_hidden_nodes:"Unselect all hidden edges",unselect_all_hidden_edges:"Unselect all hidden edges",unselect_nodes:"Unselect this node",unselect_edges:"Unselect this edge",focus_nodes:"Select only this node",focus_edges:"Select only this edge",empty_nodes:"This node has no attribute",empty_edges:"This edge has no attribute",node_no_label:"(Empty label)",edge_no_label:"(Empty label)",locate_on_graph:"Locate on the graph"},uue={title:"Appearance",partition:"Partition",ranking:"Ranking",show_edges:"Show edges",no_caption:"(no caption)",transformation_methods:{title:"Transformation methods",linear:"linear","pow-2":"pow 2","pow-3":"pow 3",sqrt:"sqrt",log:"log",spline:"spline"},graph:{background_color:"Background color",layout_grid_color:"Layout evaluation grid color"},color:{title:"Color",set_color_from:"Set color from...",data:"Input file",fixed:"A constant color",source:"Source nodes",target:"Target nodes",quanti:"as numbers",quali:"as strings",default_value:"Color for {{items}} with no valid value",color_all_items:"Color for all {{items}}",data_description:"All {{items}} colors are as they are in the input data file.",source_description:"Each edge is colored as its source.",target_description:"Each edge is colored as its target.",scale_point:"Scale point",ranking_intro:"Add color points on this scale"},labels:{title:"Labels",set_labels_from:"Set label from...",set_labels_size_from:"Set label sizes from...",data:"Input data",fixed:"A constant text",fixed_label:"Label for every {{items}}",fixed_label_size:"Label size for every {{items}}",none:"No label",fixed_size:"Fixed size",size:"{{items}} size",default_value:"Label for {{items}} with no valid value",size_coef:"Labels sizes (higher makes labels appear bigger)",adapts_to_zoom:"How much labels should grow with zoom",density:"How many labels should appear any time",data_description:"All {{items}} labels are as they are in the input data file.",none_description:"All {{items}} have no displayed label."},images:{title:"Images",set_labels_from:"Set image from...",data:"Input data",fixed:"A constant URL",fixed_label:"Same image for every {{items}}",none:"No label",default_value:"Image for {{items}} with no valid value",data_description:"All {{items}} images are as they are in the input data file.",none_description:"All {{items}} have no displayed image."},size:{title:"Size",set_size_from:"Set size from...",data:"Input file",fixed:"A constant size",default_value:"Size for {{items}} with no valid value",size_all_items:"Size for all {{items}}",data_description:"All {{items}} sizes are as they are in the input data file."}},due={title:"Filters",description:"This panel allows to filter the graph by stacking filters.",filter:"Filter",add_filter:"Add filter",full_graph:"Full graph",using:"Using",topological:"Topology",desactivated:"Desactivated filter, click to reactivate",no_concurrent_edit:"Only one filter can be edited at a time. Confirm current edition to edit this filter.",range:"range",terms:"exact values",script:"Custom filter",activated:"Activated filter",create_filter:"Create filter",keepMissingValues:"Keep missing values",inapplicable:"Filter disabled: only one value available"},fue={create_nodes:"Create new node",create_edges:"Create new edge",create_nodes_success:"The node has successfully been created.",create_edges_success:"The edge has successfully been created.",update_this_nodes:"Edit this node",update_this_edges:"Edit this edge",update_nodes:"Edit existing node",update_edges:"Edit existing edge",update_nodes_success:"The node has successfully been updated.",update_edges_success:"The edge has successfully been updated.",delete_this_nodes:"Delete this node",delete_this_edges:"Delete this edge",delete_nodes_zero:"Delete nodes",delete_nodes_one:"Delete one node",delete_nodes:"Delete {{count}} nodes",delete_edges_zero:"Delete edges",delete_edges_one:"Delete one edge",delete_edges:"Delete {{count}} edges",confirm_delete_nodes_one:"Are you sure you want to delete this one node?",confirm_delete_nodes:"Are you sure you want to delete {{count}} nodes?",confirm_delete_edges_one:"Are you sure you want to delete this one edge?",confirm_delete_edges:"Are you sure you want to delete {{count}} edges?",search_nodes:"Search on node labels...",delete_nodes_attributes:"Delete the '{{name}}' node attribute",delete_edges_attributes:"Delete the '{{name}}' edge attribute",confirm_delete_attributes:"This deletion will remove {{nbValues}} values from the graph. Are you sure you want to delete the attribute {{name}}?",delete_attributes_success:"The '{{name}}' attribute has been deleted."},pue={title:"Graph",control:{zoomIn:"Zoom In",zoomOut:"Zoom Out",zoomReset:"See the whole graph",fullscreenEnter:"Enter fullscreen mode",fullscreenExit:"Exit fullscreen"},metadata:{title:"Metadata","graph-title":"Title",description:"Description",keywords:"Keywords",authors:"Authors","graph-type":"Graph Type"},partitioning:{title:"Partitioning",description:"To apply appearance or filters differently on different groups of {{items}}, partition your graph using any node qualitative attribute.",partition:"Partition {{items}} on",status_no_partition:"{{items}} are not partitioned",status_item_preview:"The {{items}} will be grouped into",status_item:"The {{items}} are grouped into",status_partition:"{{nbPartitions}} partitions using the '{{attribute}}' attribute.",warning_nbMissing:"{{nbMissingValues}} {{items}} don't have a value for this attribute.",missing_partition_preview:"They will be grouped into a 'missing value' partition.",missing_partition:"They are grouped into a 'missing value' partition."},model:{title:"Attributes' Model",no_attributes:"There is no attribute in the model yet.",attribute:{qualitative:"Qualitative",quantitative:"Quantitative"},directed:"Directed",undirected:"Undirected",mixed:"Mixed",graph:"graph",nodes_one:"node",nodes_zero:"node",nodes:"nodes",edges_one:"edge",edges_zero:"edge",edges:"edges","nodes-data":{id:"Node ID",label:"Node label",size:"Node size",color:"Node color",x:"Node x position",y:"Node y position",attributes:"Other attributes","attribute-name":"Attribute name","attribute-value":"Attribute value","new-attribute":"Add new attribute"},"edges-data":{id:"Edge ID",source:"Edge source",target:"Edge target",label:"Edge label",color:"Edge color",weight:"Edge weight",attributes:"Other attributes","attribute-name":"Attribute name","attribute-value":"Attribute value","new-attribute":"Add new attribute"},warnings:{missing:"{{nbValues}} missing values",wrong:"{{nbValues}} values are not quantitative",allMissing:"No values in the graph"}},open:{title:"Open a graph file",local:{title:"Open a local file",dragndrop_text:"Drag'n'drop a GEXF or GRAPHML file",success:"File {{filename}} has been successfully loaded",error:"An error occurred while opening the file. Please check that the file is a valid."},remote:{title:"Open an url","url-field":"URL of a GEXF or GRAPHML file",success:"File {{filename}} has been successfully loaded",error:"An error occurred while opening the file. Please check your connectivity and that the file is a valid."},cloud:{title:"Open a file from {{provider}}","no-data":"You have no GEXF or GRAPHML file saved on {{provider}}","file-open-external":"Open {{filename}} on {{provider}}","select-file":"Select a file",success:"File {{filename}} has been successfully loaded",error:"A technical error occurred. Please check your connectivity or try later."},new:{title:"Open an empty graph",message:"Current graph will be cleared, are you sure you want to continue ?",success:"Empty graph loaded"}},save:{title:"Save graph",cloud:{title:"Save in {{provider}} as...",field:{filename:"Filename",description:"Description",isPublic:"Create a public gist"},success:"File {{filename}} has been successfully saved",error:"An error occurred while saving your graph. Please check your connectivity or try later."}},export:{title:"Export graph",png:{title:"Export PNG snapshot",success:"Your graph PNG export has successfully been saved.",fields:{filename:"Filename",width:"Width (in pixels)",height:"Height (in pixels)",preserve_camera:"Preserve current camera position"}}},caption:{color:"Color {{itemType}} by",size:"Size {{itemType}} by",title:"Caption",disabled:"Caption is available once appearance has been set."}},gue={title:"Statistics",compute_one:"Compute metric",compute:"Compute metrics",success_one:'The {{items}} metric "{{metrics}}" has been added to the data.',success:'The {{items}} metrics "{{metrics}}" have been added to the data.',description:"This panel allows computing new attributes to the nodes or edges of the graph. These attributes can later be used in the other panels, for appearance or filtering for instance.",placeholder:"Select an algorithm",attributes_placeholder:"None",nodes_attribute_already_exists:'A node attribute named "{{field}}" already exists. Its values will be overridden.',edges_attribute_already_exists:'An edge attribute named "{{field}}" already exists. Its values will be overridden.',nodes:{louvain:{title:"Louvain community detection",description:"This algorithm aims at splitting the nodes as densely connected groups.",attributes:{modularityClass:"Modularity class attribute name"},parameters:{getEdgeWeight:{title:"Edge weight attribute",description:"An edge attribute that would represent edge weights."},fastLocalMoves:{title:"Fast local moves",description:"Whether to use a well-known optimization relying on a queue set to traverse the graph more efficiently."},randomWalk:{title:"Random walk",description:"Whether to traverse the graph randomly."},resolution:{title:"Resolution",description:"An increased resolution should produce more communities."}}},pagerank:{title:"PageRank",attributes:{pagerank:"PageRank attribute name"},parameters:{getEdgeWeight:{title:"Edge weight attribute"},alpha:{title:"Alpha"},maxIterations:{title:"Max iterations"},tolerance:{title:"Tolerance"}}},betweennessCentrality:{title:"Betweenness centrality",attributes:{betweennessCentrality:"Betweenness centrality attribute name"},parameters:{getEdgeWeight:{title:"Edge weight attribute"},normalize:{title:"Normalize output?"}}},degree:{title:"Degree",attributes:{degree:"Degree attribute name"},parameters:{getEdgeWeight:{title:"Edge weight attribute"},kind:{title:"Type of degree",values:{degree:"Degree",inDegree:"Incoming degree",outDegree:"Outgoing degree"}}}},hits:{title:"HITS",attributes:{authorities:"Authority score attribute name",hubs:"Hub score attribute name"},parameters:{getEdgeWeight:{title:"Edge weight attribute"},maxIterations:{title:"Max iterations"},normalize:{title:"Normalize output?"},tolerance:{title:"Tolerance"}}},nodescript:{title:"Custom node metric",description:"Define a function that compute a metric for a node.",attributes:{custom:"Attribute name on which to store the metric"}}},edges:{disparity:{title:"Disparity",attributes:{disparity:"Disparity attribute name"},parameters:{getEdgeWeight:{title:"Edge weight attribute"}}},simmelianStrength:{title:"Simmelian strength",attributes:{simmelianStrength:"Simmelian strength attribute name"}},edgescript:{title:"Custom edge metric",description:"Define a function that compute a metric for an edge.",attributes:{custom:"Attribute name on which to store the metric"}}}},mue={title:"Layout",description:"This panel allows computing new coordinates to nodes of the graph. ",placeholder:"Select a layout algorithm",exec:{success:'Layout "{{layout}}" has successfully been applied.',started:"Layout {{layout}} is running",stopped:"Layout {{layout}} has been stopped"},random:{title:"Random",description:"Random layout positioning every node by choosing each coordinates uniformly at random on the interval [0, 1)",parameters:{scale:{title:"Scale",description:"Scale of the layout"},center:{title:"Center",description:"Center of the layout"}}},circular:{title:"Circular",description:"Arranges the node in a circle",parameters:{scale:{title:"Scale",description:"Scale of the layout"},center:{title:"Center",description:"Center of the layout"}}},circlePack:{title:"CirclePack",description:"Arranges the nodes as a bubble chart, according to specified attributes",parameters:{scale:{title:"Scale",description:"Scale of the layout"},groupingField:{title:"Hierarchy attribute",description:"An optional attribute to use to group the nodes"},center:{title:"Center",description:"Center of the layout"}}},fa2:{title:"ForceAtlas2",buttons:{autoSettings:{title:"Guess settings",description:"Generates settings that fit the current graph the best"}},parameters:{adjustSizes:{title:"Adjust sizes?",description:"Should the node’s sizes be taken into account?"},barnesHutOptimize:{title:"barnesHutOptimize",description:"Whether to use the Barnes-Hut approximation to compute repulsion in O(n*log(n)) rather than default O(n^2), n being the number of nodes"},barnesHutTheta:{title:"barnesHutTheta",description:"Barnes-Hut approximation theta parameter"},edgeWeightInfluence:{title:"Edge weight influence",description:"Influence of the edge’s weights on the layout"},gravity:{title:"Gravity",description:"Strength of the layout’s gravity"},linLogMode:{title:"linLog mode",description:"Whether to use Noack’s LinLog model."},outboundAttractionDistribution:{title:"Out bound attraction distribution"},scalingRatio:{title:"Scaling ratio"},slowDown:{title:"Slow down?"},strongGravityMode:{title:"Strong gravity mode?"}}},force:{title:"Force directed",parameters:{attraction:{title:"Attraction",description:"Importance of the attraction force, that attracts each pair of connected nodes like elastics"},repulsion:{title:"Repulsion",description:"Importance of the repulsion force, that attracts each pair of nodes like magnets"},gravity:{title:"Gravity",description:"Importance of the gravity force, that attracts all nodes to the center"},inertia:{title:"Inertia",description:"Percentage of a node vector displacement that is preserved at each step. 0 means no inertia, 1 means no friction"},maxMove:{title:"Maximum move",description:"Maximum length a node can travel at each step, in pixel"}}},noverlap:{title:"Noverlap",description:"Anti-collision layout algorithm",parameters:{gridSize:{title:"Grid size",description:"Number of grid cells horizontally and vertically subdivising the graph’s space. This is used as an optimization scheme. Set it to 1 and you will have O(n²) time complexity, which can sometimes perform better with very few nodes."},margin:{title:"Margin",description:"Margin to keep between nodes"},expansion:{title:"Expansion",description:"Percentage of current space that nodes could attempt to move outside of"},ratio:{title:"Ratio",description:"Ratio scaling node sizes"},speed:{title:"Speed",description:"Dampening factor that will slow down node movements to ease the overall process"}}},script:{title:"Custom layout",description:"Write your own layout by creating a function that returns a {x,y} object for each node",parameters:{}},quality:{title:"Layout quality",description:"Are connected nodes closer thanks to the layout?",enable:"Enable Connected-closeness",showGrid:"Show the Δmax grid",caption_CMax:"of edges are shorter than Δmax thanks to the layout",caption_deltaMax:"Grid size = Δmax = "}},hue={title:"Data management",login_capabilities:"You can log into GitHub from Gephi Lite, to save and load graph files directly as GitHub Gists:"},_ue={add:"Add",all:"All",apply:"Apply",cancel:"Cancel",clear:"Clear",close:"Close",collapse:"Collapse",confirm:"Confirm",copy:"Copy",created:"Created",delete:"Delete",edit:"Edit",expand:"Expand",filename:"Filename",hide:"Hide","load-more":"Load more",loading:"Loading",min:"Min",max:"Max",none:"None",open:"Open",open_file:"Open {{filename}}",open_code_editor:"Open code editor",remove:"Remove",reset:"Reset",save:"Save","save-and-run":"Save and run",select:"Select...",start:"Start",stop:"Stop",size:"Size",show:"Show",show_more:"Show more",show_less:"Show less",submit:"Submit",updated:"Updated"},vue={github:{title:"GitHub",auth:{title:"GitHub authentification",asking_for_device_code:"Asking github for device code",copy_code:'Copy the code below, and click on "Open GitHub" button. It will opened a new tab, on which GitHub will ask you the code',copy_success:"Code saved in clipboard",waiting_validation:"Waiting validation"}}},Eue={graph:{placeholder:"Search for nodes, edges ...",no_result:"No results",help:"Type something to search",other_result:"... and {{count}} other results",select_all_nodes:"Add {{count}} nodes in the selection",select_all_edges:"Add {{count}} edges in the selection"},nodes:{placeholder:"Search a node ...",no_result:"No node found",help:"Type something to find a node",other_result:"... and {{count}} other nodes",select_all:"Select all {{count}} nodes"},edges:{placeholder:"Search an edge...",no_result:"No edge found",help:"Type something to find an edge",other_result:"... and {{count}} other edges",select_all:"Select all {{count}} edges"}},bue={title:"User's settings","danger-zone":{title:"Danger zone","reset-state":{title:"Reset application state",description:"All your data will be deleted, even the settings saved locally (ie. in your browser). Are you sure ?",success:"Application's state has been cleared"}},theme:"Choose a theme"},Sue={welcome:eue,"gephi-lite":{title:"Gephi Lite",info:"More info on Gephi Lite"},error:tue,user:nue,menu:rue,providers:iue,github:aue,auth:oue,storage:sue,context:lue,selection:cue,appearance:uue,filters:due,edition:fue,graph:pue,statistics:gue,layouts:mue,file:hue,common:_ue,cloud:vue,search:Eue,settings:bue},yue={title:"Welcome to Gephi Lite","disclaimer-1":"Gephi Lite is currently a work in progress.","disclaimer-2":"Feel free to check the GitHub project to see more about the upcoming features or to report bugs.",logo:"Gephi logo",open_recent:"Open recent",open_graph:"Open graph file",no_recent:"No remote file has been opened in that browser yet.",samples:"Samples"},Tue={title:"Error",unknown:"An unknown error has occurred.",message:"Sorry, we are working to make gephi-lite better but bugs still happened... It will help us if you can open an issue on github with a description of what you were doing.",report:"Report error",retry:"Retry",not_found:{title:"Page Not Found",subtitle:"The page you were looking for doesn't exist.",paragraph:"You may have mistyped the address or the page may have moved."},form:{required:"Field is required",unique:"Value must be unique, and a data with the same value already exist"}},Cue={avatar_alt:"{{name}}'s avatar"},Rue={open:{cloud:"Open graph from {{provider}}",remote:"Open remote graph",local:"Open local graph",new:"Create a new graph"},save:{default:"Save",cloud:"Save on {{provider}} as..."},download:{gexf:"Save graph locally","gexf-error":"An error occurred while generating GEXF file"},new:{title:"Open an empty graph",message:"Current graph will be cleared, are you sure you want to continue ?",success:"Empty graph loaded"}},Nue={github:"GitHub"},Aue={title:"GitHub authentication",description:"You can log into GitHub from Gephi Lite, to save and load graph files directly as GitHub Gists.",logged_as:"You are currently logged into GitHub as {{username}}.",select_ui_language:"Select application language"},wue={unauth_success:"Unauthentication successful",sign_out:"Sign-out from GitHub",sign_in:"Sign-in to GitHub"},Oue={cannot_restore:"Your graph cannot be restored.",restore_successful:"Your work graph has been restored."},xue={title:"Data overview"},Due={nodes_zero:"No selected node",nodes_one:"One selected node",nodes:"{{count}} selected nodes",edges_zero:"No selected edge",edges_one:"One selected edge",edges:"{{count}} selected edges",visible_nodes_zero:"No visible selected node",visible_nodes_one:"One visible selected node",visible_nodes:"{{count}} visible selected nodes",visible_edges_zero:"No visible selected edge",visible_edges_one:"One visible selected edge",visible_edges:"{{count}} visible selected edges",hidden_nodes_one:"One hidden selected node",hidden_nodes:"{{count}} hidden selected nodes",hidden_edges_one:"One hidden selected edge",hidden_edges:"{{count}} hidden selected edges",select_all:"Select all",unselect_all:"Unselect all",unselect_all_hidden_nodes:"Unselect all hidden edges",unselect_all_hidden_edges:"Unselect all hidden edges",unselect_nodes:"Unselect this node",unselect_edges:"Unselect this edge",focus_nodes:"Select only this node",focus_edges:"Select only this edge",empty_nodes:"This node has no attribute",empty_edges:"This edge has no attribute",node_no_label:"(Empty label)",edge_no_label:"(Empty label)",locate_on_graph:"Locate on the graph"},Iue={title:"Appearance",partition:"Partition",ranking:"Ranking",show_edges:"Show edges",transformation_methods:{title:"Transformation methods",linear:"linear","pow-2":"pow 2","pow-3":"pow 3",sqrt:"sqrt",log:"log",spline:"spline"},graph:{background_color:"Background color",layout_grid_color:"Layout evaluation grid color"},color:{title:"Color",set_color_from:"Set color from...",data:"Input file",fixed:"A constant color",source:"Source nodes",target:"Target nodes",quanti:"as numbers",quali:"as strings",default_value:"Color for {{items}} with no valid value",color_all_items:"Color for all {{items}}",data_description:"All {{items}} colors are as they are in the input data file.",source_description:"Each edge is colored as its source.",target_description:"Each edge is colored as its target.",scale_point:"Scale point",ranking_intro:"Add color points on this scale"},labels:{title:"Labels",set_labels_from:"Set label from...",set_labels_size_from:"Set label sizes from...",data:"Input data",fixed:"A constant text",fixed_label:"Label for every {{items}}",fixed_label_size:"Label size for every {{items}}",none:"No label",fixed_size:"Fixed size",size:"{{items}} size",default_value:"Label for {{items}} with no valid value",size_coef:"Labels sizes (higher makes labels appear bigger)",adapts_to_zoom:"How much labels should grow with zoom",density:"How many labels should appear any time",data_description:"All {{items}} labels are as they are in the input data file.",none_description:"All {{items}} have no displayed label."},images:{title:"Images",set_labels_from:"Set image from...",data:"Input data",fixed:"A constant URL",fixed_label:"Same image for every {{items}}",none:"No label",default_value:"Image for {{items}} with no valid value",data_description:"All {{items}} images are as they are in the input data file.",none_description:"All {{items}} have no displayed image."},size:{title:"Size",set_size_from:"Set size from...",data:"Input file",fixed:"A constant size",default_value:"Size for {{items}} with no valid value",size_all_items:"Size for all {{items}}",data_description:"All {{items}} sizes are as they are in the input data file."},no_caption:"(no caption)"},Mue={title:"Filters",description:"This panel allows to filter the graph by stacking filters.",filter:"Filter",add_filter:"Add filter",full_graph:"Full graph",using:"Using",topological:"Topology",desactivated:"Desactivated filter, click to reactivate",no_concurrent_edit:"Only one filter can be edited at a time. Confirm current edition to edit this filter.",range:"range",terms:"exact values",script:"Custom filter",activated:"Activated filter",create_filter:"Create filter",keepMissingValues:"Keep missing values",inapplicable:"Filter disabled: only one value available"},Lue={create_nodes:"Create new node",create_edges:"Create new edge",create_nodes_success:"The node has successfully been created.",create_edges_success:"The edge has successfully been created.",update_this_nodes:"Edit this node",update_this_edges:"Edit this edge",update_nodes:"Edit existing node",update_edges:"Edit existing edge",update_nodes_success:"The node has successfully been updated.",update_edges_success:"The edge has successfully been updated.",delete_this_nodes:"Delete this node",delete_this_edges:"Delete this edge",delete_nodes_zero:"Delete nodes",delete_nodes_one:"Delete one node",delete_nodes:"Delete {{count}} nodes",delete_edges_zero:"Delete edges",delete_edges_one:"Delete one edge",delete_edges:"Delete {{count}} edges",confirm_delete_nodes_one:"Are you sure you want to delete this one node?",confirm_delete_nodes:"Are you sure you want to delete {{count}} nodes?",confirm_delete_edges_one:"Are you sure you want to delete this one edge?",confirm_delete_edges:"Are you sure you want to delete {{count}} edges?",search_nodes:"Search on node labels..."},kue={title:"Graph",control:{zoomIn:"Zoom In",zoomOut:"Zoom Out",zoomReset:"See the whole graph",fullscreenEnter:"Enter fullscreen mode",fullscreenExit:"Exit fullscreen"},metadata:{title:"Metadata","graph-title":"Title",description:"Description",keywords:"Keywords",authors:"Authors","graph-type":"Graph Type"},partitioning:{title:"Partitioning",description:"To apply appearance or filters differently on different groups of {{items}}, partition your graph using any node qualitative attribute.",partition:"Partition {{items}} on",status_no_partition:"{{items}} are not partitioned",status_item_preview:"The {{items}} will be grouped into",status_item:"The {{items}} are grouped into",status_partition:"{{nbPartitions}} partitions using the '{{attribute}}' attribute.",warning_nbMissing:"{{nbMissingValues}} {{items}} don't have a value for this attribute.",missing_partition_preview:"They will be grouped into a 'missing value' partition.",missing_partition:"They are grouped into a 'missing value' partition."},model:{title:"Attributes' Model",no_attributes:"There is no attribute in the model yet.",attribute:{qualitative:"Qualitative",quantitative:"Quantitative"},directed:"Directed",undirected:"Undirected",mixed:"Mixed",graph:"graph",nodes_one:"node",nodes_zero:"node",nodes:"nodes",edges_one:"edge",edges_zero:"edge",edges:"edges","nodes-data":{id:"Node ID",label:"Node label",size:"Node size",color:"Node color",x:"Node x position",y:"Node y position",attributes:"Other attributes","attribute-name":"Attribute name","attribute-value":"Attribute value","new-attribute":"Add new attribute"},"edges-data":{id:"Edge ID",source:"Edge source",target:"Edge target",label:"Edge label",color:"Edge color",weight:"Edge weight",attributes:"Other attributes","attribute-name":"Attribute name","attribute-value":"Attribute value","new-attribute":"Add new attribute"}},open:{title:"Open a graph file",local:{title:"Open a local file",dragndrop_text:"Drag'n'drop a GEXF or GRAPHML file",success:"File {{filename}} has been successfully loaded",error:"An error occurred while opening the file. Please check that the file is a valid."},remote:{title:"Open an url","url-field":"URL of a GEXF or GRAPHML file",success:"File {{filename}} has been successfully loaded",error:"An error occurred while opening the file. Please check your connectivity and that the file is a valid."},cloud:{title:"Open a file from {{provider}}","no-data":"You have no GEXF or GRAPHML file saved on {{provider}}","file-open-external":"Open {{filename}} on {{provider}}","select-file":"Select a file",success:"File {{filename}} has been successfully loaded",error:"A technical error occurred. Please check your connectivity or try later."}},save:{title:"Save graph",cloud:{title:"Save in {{provider}} as...",field:{filename:"Filename",description:"Description",isPublic:"Create a public gist"},success:"File {{filename}} has been successfully saved",error:"An error occurred while saving your graph. Please check your connectivity or try later."}},export:{title:"Export graph",png:{title:"Export PNG snapshot",success:"Your graph PNG export has successfully been saved.",fields:{filename:"Filename",width:"Width (in pixels)",height:"Height (in pixels)",preserve_camera:"Preserve current camera position"}}},caption:{color:"Color {{itemType}} by",size:"Size {{itemType}} by",title:"Caption",disabled:"Caption is available once appearance has been set."}},Pue={title:"Statistics",compute_one:"Compute metric",compute:"Compute metrics",success_one:'The {{items}} metric "{{metrics}}" has been added to the data.',success:'The {{items}} metrics "{{metrics}}" have been added to the data.',description:"This panel allows computing new attributes to the nodes or edges of the graph. These attributes can later be used in the other panels, for appearance or filtering for instance.",placeholder:"Select an algorithm",attributes_placeholder:"None",nodes_attribute_already_exists:'A node attribute named "{{field}}" already exists. Its values will be overridden.',edges_attribute_already_exists:'An edge attribute named "{{field}}" already exists. Its values will be overridden.',nodes:{louvain:{title:"Louvain community detection",description:"This algorithm aims at splitting the nodes as densely connected groups.",attributes:{modularityClass:"Modularity class attribute name"},parameters:{getEdgeWeight:{title:"Edge weight attribute",description:"An edge attribute that would represent edge weights."},fastLocalMoves:{title:"Fast local moves",description:"Whether to use a well-known optimization relying on a queue set to traverse the graph more efficiently."},randomWalk:{title:"Random walk",description:"Whether to traverse the graph randomly."},resolution:{title:"Resolution",description:"An increased resolution should produce more communities."}}},pagerank:{title:"PageRank",attributes:{pagerank:"PageRank attribute name"},parameters:{getEdgeWeight:{title:"Edge weight attribute"},alpha:{title:"Alpha"},maxIterations:{title:"Max iterations"},tolerance:{title:"Tolerance"}}},betweennessCentrality:{title:"Betweenness centrality",attributes:{betweennessCentrality:"Betweenness centrality attribute name"},parameters:{getEdgeWeight:{title:"Edge weight attribute"},normalize:{title:"Normalize output?"}}},degree:{title:"Degree",attributes:{degree:"Degree attribute name"},parameters:{getEdgeWeight:{title:"Edge weight attribute"},kind:{title:"Type of degree",values:{degree:"Degree",inDegree:"Incoming degree",outDegree:"Outgoing degree"}}}},hits:{title:"HITS",attributes:{authorities:"Authority score attribute name",hubs:"Hub score attribute name"},parameters:{getEdgeWeight:{title:"Edge weight attribute"},maxIterations:{title:"Max iterations"},normalize:{title:"Normalize output?"},tolerance:{title:"Tolerance"}}},nodescript:{title:"Custom node metric",description:"Define a function that compute a metric for a node.",attributes:{custom:"Attribute name on which to store the metric"}}},edges:{disparity:{title:"Disparity",attributes:{disparity:"Disparity attribute name"},parameters:{getEdgeWeight:{title:"Edge weight attribute"}}},simmelianStrength:{title:"Simmelian strength",attributes:{simmelianStrength:"Simmelian strength attribute name"}},edgescript:{title:"Custom edge metric",description:"Define a function that compute a metric for an edge.",attributes:{custom:"Attribute name on which to store the metric"}}}},Fue={title:"Layout",description:"This panel allows computing new coordinates to nodes of the graph. ",placeholder:"Select a layout algorithm",exec:{success:'Layout "{{layout}}" has successfully been applied.',started:"Layout {{layout}} is running",stopped:"Layout {{layout}} has been stopped"},random:{title:"Random",description:"Random layout positioning every node by choosing each coordinates uniformly at random on the interval [0, 1)",parameters:{scale:{title:"Scale",description:"Scale of the layout"},center:{title:"Center",description:"Center of the layout"}}},circular:{title:"Circular",description:"Arranges the node in a circle",parameters:{scale:{title:"Scale",description:"Scale of the layout"},center:{title:"Center",description:"Center of the layout"}}},circlePack:{title:"CirclePack",description:"Arranges the nodes as a bubble chart, according to specified attributes",parameters:{scale:{title:"Scale",description:"Scale of the layout"},groupingField:{title:"Hierarchy attribute",description:"An optional attribute to use to group the nodes"},center:{title:"Center",description:"Center of the layout"}}},fa2:{title:"ForceAtlas2",buttons:{autoSettings:{title:"Guess settings",description:"Generates settings that fit the current graph the best"}},parameters:{adjustSizes:{title:"Adjust sizes?",description:"Should the node’s sizes be taken into account?"},barnesHutOptimize:{title:"barnesHutOptimize",description:"Whether to use the Barnes-Hut approximation to compute repulsion in O(n*log(n)) rather than default O(n^2), n being the number of nodes"},barnesHutTheta:{title:"barnesHutTheta",description:"Barnes-Hut approximation theta parameter"},edgeWeightInfluence:{title:"Edge weight influence",description:"Influence of the edge’s weights on the layout"},gravity:{title:"Gravity",description:"Strength of the layout’s gravity"},linLogMode:{title:"linLog mode",description:"Whether to use Noack’s LinLog model."},outboundAttractionDistribution:{title:"Out bound attraction distribution"},scalingRatio:{title:"Scaling ratio"},slowDown:{title:"Slow down?"},strongGravityMode:{title:"Strong gravity mode?"}}},force:{title:"Force directed",parameters:{attraction:{title:"Attraction",description:"Importance of the attraction force, that attracts each pair of connected nodes like elastics"},repulsion:{title:"Repulsion",description:"Importance of the repulsion force, that attracts each pair of nodes like magnets"},gravity:{title:"Gravity",description:"Importance of the gravity force, that attracts all nodes to the center"},inertia:{title:"Inertia",description:"Percentage of a node vector displacement that is preserved at each step. 0 means no inertia, 1 means no friction"},maxMove:{title:"Maximum move",description:"Maximum length a node can travel at each step, in pixel"}}},noverlap:{title:"Noverlap",description:"Anti-collision layout algorithm",parameters:{gridSize:{title:"Grid size",description:"Number of grid cells horizontally and vertically subdivising the graph’s space. This is used as an optimization scheme. Set it to 1 and you will have O(n²) time complexity, which can sometimes perform better with very few nodes."},margin:{title:"Margin",description:"Margin to keep between nodes"},expansion:{title:"Expansion",description:"Percentage of current space that nodes could attempt to move outside of"},ratio:{title:"Ratio",description:"Ratio scaling node sizes"},speed:{title:"Speed",description:"Dampening factor that will slow down node movements to ease the overall process"}}},script:{title:"Custom layout",description:"Write your own layout by creating a function that returns a {x,y} object for each node"}},Uue={title:"Data management",login_capabilities:"You can log into GitHub from Gephi Lite, to save and load graph files directly as GitHub Gists:"},Bue={add:"Add",all:"All",apply:"Apply",cancel:"Cancel",clear:"Clear",close:"Close",collapse:"Collapse",confirm:"Confirm",copy:"Copy",created:"Created",delete:"Delete",edit:"Edit",expand:"Expand",filename:"Filename",hide:"Hide","load-more":"Load more",loading:"Loading",min:"Min",max:"Max",none:"None",open:"Open",open_file:"Open {{filename}}",open_code_editor:"Open code editor",remove:"Remove",reset:"Reset",save:"Save","save-and-run":"Save and run",select:"Select...",start:"Start",stop:"Stop",size:"Size",show:"Show",show_more:"Show more",show_less:"Show less",submit:"Submit",updated:"Updated"},Gue={github:{title:"GitHub",auth:{title:"GitHub authentification",asking_for_device_code:"Asking github for device code",copy_code:'Copy the code below, and click on "Open GitHub" button. It will opened a new tab, on which GitHub will ask you the code',copy_success:"Code saved in clipboard",waiting_validation:"Waiting validation"}}},$ue={graph:{placeholder:"Search for nodes, edges ...",no_result:"No results",help:"Type something to search",other_result:"... and {{count}} other results",select_all_nodes:"Add {{count}} nodes in the selection",select_all_edges:"Add {{count}} edges in the selection"},nodes:{placeholder:"Search a node ...",no_result:"No node found",help:"Type something to find a node",other_result:"... and {{count}} other nodes"},edges:{placeholder:"Search an edge...",no_result:"No edge found",help:"Type something to find an edge",other_result:"... and {{count}} other edges"}},zue={title:"User's settings","danger-zone":{title:"Danger zone","reset-state":{title:"Reset application state",description:"All your data will be deleted, even the settings saved locally (ie. in your browser). Are you sure ?",success:"Application's state has been cleared"}}},Hue={welcome:yue,"gephi-lite":{title:"Gephi Lite",info:"More info on Gephi Lite"},error:Tue,user:Cue,menu:Rue,providers:Nue,github:Aue,auth:wue,storage:Oue,context:xue,selection:Due,appearance:Iue,filters:Mue,edition:Lue,graph:kue,statistics:Pue,layouts:Fue,file:Uue,common:Bue,cloud:Gue,search:$ue,settings:zue},Vue={title:"Bienvenue dans Gephi Lite","disclaimer-1":"Gephi Lite est actuellement en cours de développement.","disclaimer-2":"N'hésitez pas à consulter le projet GitHub pour en savoir plus sur les fonctionnalités à venir ou pour signaler des bugs.",logo:"Logo de Gephi",open_recent:"Fichiers récemment ouverts",open_graph:"Ouvrir un fichier de graphe",no_recent:"Aucun fichier distant n'a été ouvert dans ce navigateur pour le moment.",samples:"Exemples"},que={title:"Erreur",unknown:"Une erreur inconnue s'est produite.",message:"Désolé ! gephi-lite est en constante amélioration mais des bugs nous échappe... Vous pouvez signaler cette erreur sur github en cliquant sur le bouton ci-dessous.",report:"Signaler l'erreur",retry:"Ré-essayer",not_found:{title:"Page non trouvée",subtitle:"La page que vous recherchez n'existe pas.",paragraph:"Vous avez peut-être mal saisi l'adresse ou la page a été déplacée."},form:{required:"Champs requis",unique:"Une autre entrée existe déjà avec cette valeur"}},Yue={avatar_alt:"Avatar de {{name}}"},jue={open:{cloud:"Ouvrir un graphe depuis {{provider}}",remote:"Ouvrir un graphe distant",local:"Ouvrir un graphe local",new:"Créer un nouveau graphe"},save:{default:"Enregistrer",cloud:"Enregistrer sur {{provider}} sous..."},download:{gexf:"Enregistrer le graphe localement","gexf-error":"Une erreur s'est produite lors de la génération du fichier GEXF"}},Wue={github:"GitHub"},Kue={title:"Authentification GitHub",select_ui_language:"Sélectionner le langage de l'application",description:"Vous pouvez vous connecter à GitHub depuis Gephi Lite pour enregistrer et charger des fichiers de graphe directement en tant que gists GitHub.",logged_as:"Vous êtes actuellement connecté à GitHub en tant que {{username}}."},Que={unauth_success:"Déconnexion réussie",sign_out:"Se déconnecter de GitHub",sign_in:"Se connecter à GitHub"},Xue={cannot_restore:"Votre graphe ne peut pas être restauré.",restore_successful:"Votre graphe de travail a été restauré."},Zue={title:"Aperçu des données"},Jue={nodes_zero:"Aucun élément sélectionné",nodes_one:"Un nœud sélectionné",nodes:"{{count}} nœuds sélectionnés",edges_zero:"Aucun élément sélectionné",edges_one:"Un lien sélectionné",edges:"{{count}} liens sélectionnés",visible_nodes_zero:"Aucun élément sélectionné visible",visible_nodes_one:"Un nœud sélectionné visible",visible_nodes:"{{count}} nœuds sélectionnés visibles",visible_edges_zero:"Aucun élément sélectionné visible",visible_edges_one:"Un lien sélectionné visible",visible_edges:"{{count}} liens sélectionnés visibles",hidden_nodes_one:"Un nœud sélectionné masqué",hidden_nodes:"{{count}} nœuds sélectionnés masqués",hidden_edges_one:"Un lien sélectionné masqué",hidden_edges:"{{count}} liens sélectionnés masqués",select_all:"Sélectionner tout",unselect_all:"Tout désélectionner",unselect_all_hidden_nodes:"Tout désélectionner pour les nœuds masqués",unselect_all_hidden_edges:"Tout désélectionner pour les liens masqués",unselect_nodes:"Désélectionner ce nœud",unselect_edges:"Désélectionner ce lien",focus_nodes:"Sélectionner uniquement ce nœud",focus_edges:"Sélectionner uniquement ce lien",empty_nodes:"Ce nœud n'a pas d'attribut",empty_edges:"Ce lien n'a pas d'attribut",node_no_label:"(libellé vide)",edge_no_label:"(libellé vide)",locate_on_graph:"Localiser sur le graphe"},ede={title:"Apparence",partition:"Partition",ranking:"Classement",show_edges:"Afficher les liens",no_caption:"(pas de légende)",transformation_methods:{title:"Méthodes de transformation",linear:"linéaire","pow-2":"puissance 2","pow-3":"puissance 3",sqrt:"racine carrée",log:"logarithme",spline:"spline"},graph:{background:{title:"Arrière-plan",color:"Couleur"}},color:{title:"Couleur",set_color_from:"Définir la couleur à partir de...",data:"Fichier de données",fixed:"Une couleur constante",source:"Nœuds sources",target:"Nœuds cibles",quanti:"en tant que nombres",quali:"en tant que chaînes de caractères",default_value:"Couleur pour {{items}} sans valeur valide",color_all_items:"Couleur pour tous les {{items}}",data_description:"Toutes les couleurs des {{items}} sont celles du fichier de données d'entrée.",source_description:"Chaque lien est coloré en fonction de son nœud source.",target_description:"Chaque lien est coloré en fonction de son nœud cible.",scale_point:"Point d'échelle",ranking_intro:"Ajoutez des points de couleur sur cette échelle"},labels:{title:"Libellés",set_labels_from:"Définir le libellé à partir de...",set_labels_size_from:"Définir la taille du libellé à partir de...",data:"Fichier de données",fixed:"Un texte constant",fixed_label:"Libellé pour chaque {{items}}",fixed_label_size:"Taille du libellé pour chaque {{items}}",none:"Pas de libellé",fixed_size:"Taille fixe",size:"Taille des {{items}}",default_value:"Libellé pour {{items}} sans valeur valide",size_coef:"Tailles des libellés (plus grand rend les libellés plus grands)",adapts_to_zoom:"Dans quelle mesure les libellés doivent-ils augmenter avec le zoom",density:"Combien de libellés doivent apparaître à tout moment",data_description:"Tous les libellés des {{items}} sont ceux du fichier de données d'entrée.",none_description:"Tous les {{items}} n'ont pas de libellé affiché."},images:{title:"Images",set_labels_from:"Définir l'image à partir de...",data:"Fichier de données",fixed:"Une URL fixe",fixed_label:"La même image pour chaque {{items}}",none:"Aucune image",default_value:"Image pour {{items}} sans valeur valide",data_description:"Toutes les images des {{items}} sont ceux du fichier de données d'entrée.",none_description:"Tous les {{items}} n'ont pas d'image affichée."},size:{title:"Taille",set_size_from:"Définir la taille à partir de...",data:"Fichier de données",fixed:"Une taille constante",default_value:"Taille pour {{items}} sans valeur valide",size_all_items:"Taille pour tous les {{items}}",data_description:"Toutes les tailles des {{items}} sont celles du fichier de données d'entrée."}},tde={title:"Filtres",description:"Ce panneau permet de filtrer le graphe en superposant des filtres.",filter:"Filtre",add_filter:"Ajouter un filtre",full_graph:"Graphe entier",using:"Utilisation",topological:"Topologie",desactivated:"Filtre désactivé, cliquez pour réactiver",no_concurrent_edit:"Un seul filtre peut être modifié à la fois. Confirmez l'édition en cours pour modifier ce filtre.",range:"plage",terms:"valeurs exactes",script:"Filtre personnalisé",activated:"Filtre activé",create_filter:"Créer un filtre",keepMissingValues:"Conserver les valeurs manquantes",inapplicable:"Filtre désactivé : une seule valeur disponible"},nde={create_nodes:"Créer un nouveau nœud",create_edges:"Créer un nouveau lien",create_nodes_success:"Le nœud a été créé avec succès.",create_edges_success:"Le lien a été créé avec succès.",update_this_nodes:"Éditer ce nœud",update_this_edges:"Éditer ce lien",update_nodes:"Éditer le nœud existant",update_edges:"Éditer le lien existant",update_nodes_success:"Le nœud a été mis à jour avec succès.",update_edges_success:"Le lien a été mis à jour avec succès.",delete_this_nodes:"Supprimer ce nœud",delete_this_edges:"Supprimer ce lien",delete_nodes_zero:"Supprimer les nœuds",delete_nodes_one:"Supprimer un nœud",delete_nodes:"Supprimer {{count}} nœuds",delete_edges_zero:"Supprimer les liens",delete_edges_one:"Supprimer un lien",delete_edges:"Supprimer {{count}} liens",confirm_delete_nodes_one:"Êtes-vous sûr de vouloir supprimer ce nœud ?",confirm_delete_nodes:"Êtes-vous sûr de vouloir supprimer {{count}} nœuds ?",confirm_delete_edges_one:"Êtes-vous sûr de vouloir supprimer ce lien ?",confirm_delete_edges:"Êtes-vous sûr de vouloir supprimer {{count}} liens ?",search_nodes:"Rechercher par libellé de nœud..."},rde={title:"Graphe",control:{zoomIn:"Zoom avant",zoomOut:"Zoom arrière",zoomReset:"Afficher tout le graphe",fullscreenEnter:"Activer le mode plein écran",fullscreenExit:"Quitter le mode plein écran"},metadata:{title:"Métadonnées","graph-title":"Titre",description:"Description",keywords:"Mots-clés",authors:"Auteurs","graph-type":"Type de graphe"},partitioning:{title:"Partitionnement",description:"Pour appliquer l'apparence ou les filtres différemment sur différents groupes de {{items}}, partitionnez votre graphe en utilisant n'importe quel attribut qualitatif des nœuds.",partition:"Partitionner les {{items}} sur",status_no_partition:"Les {{items}} ne sont pas partitionnés",status_item_preview:"Les {{items}} seront regroupés en",status_item:"Les {{items}} sont regroupés en",status_partition:"{{nbPartitions}} partitions en utilisant l'attribut '{{attribute}}'.",warning_nbMissing:"{{nbMissingValues}} {{items}} n'ont pas de valeur pour cet attribut.",missing_partition_preview:"Ils seront regroupés dans une partition 'valeur manquante'.",missing_partition:"Ils sont regroupés dans une partition 'valeur manquante'."},model:{title:"Modèle d'attributs",no_attributes:"Il n'y a pas encore d'attribut dans le modèle.",attribute:{qualitative:"Qualitatif",quantitative:"Quantitatif"},directed:"Orienté",undirected:"Non orienté",mixed:"Mixte",graph:"graph",nodes_one:"nœud",nodes_zero:"nœud",nodes:"nœuds",edges_one:"lien",edges_zero:"lien",edges:"liens","nodes-data":{id:"ID du nœud",label:"Libellé du nœud",size:"Taille du nœud",color:"Couleur du nœud",x:"Position x du nœud",y:"Position y du nœud",attributes:"Autres attributs","attribute-name":"Nom de l'attribut","attribute-value":"Valeur de l'attribut","new-attribute":"Ajouter un nouvel attribut"},"edges-data":{id:"ID du lien",source:"Nœud source du lien",target:"Nœud cible du lien",label:"Libellé du lien",color:"Couleur du lien",weight:"Poids du lien",attributes:"Autres attributs","attribute-name":"Nom de l'attribut","attribute-value":"Valeur de l'attribut","new-attribute":"Ajouter un nouvel attribut"}},open:{title:"Ouvrir un fichier de graphe",local:{title:"Ouvrir un fichier local",dragndrop_text:"Faites glisser-déposer un fichier GEXF ou GRAPHML",success:"Le fichier {{filename}} a bien été ouvert",error:"Une erreur s'est produite lors de l'ouverture du fichier. Veuillez vérifier que le fichier est valide."},remote:{title:"Ouvrir une URL","url-field":"URL d'un fichier GEXF ou GRAPHML",success:"Le fichier {{filename}} a bien été ouvert",error:"Une erreur s'est produite lors de l'ouverture du fichier. Veuillez vérifier votre connexion et vous assurer que le fichier est valide."},cloud:{title:"Ouvrir un fichier depuis {{provider}}","no-data":"Vous n'avez aucun fichier GEXF ou GRAPHML d'enregistré sur {{provider}}","file-open-external":"Ouvrir {{filename}} sur {{provider}}","select-file":"Sélectionner un fichier",success:"Le fichier {{filename}} a bien été ouvert",error:"Une erreur technique s'est produite. Veuillez vérifier votre connexion ou réessayer ultérieurement."},new:{title:"Nouveau graphe vide",message:"Les données courantes seront perdues, voulez-vous continuer ?",success:"Graphe vide"}},save:{title:"Enregistrer le graphe",cloud:{title:"Enregistrer dans {{provider}} sous...",field:{filename:"Nom du fichier",description:"Description",isPublic:"Créer un gist public"},success:"Le fichier {{filename}} a bien été enregistré",error:"Une erreur s'est produite lors de l'enregistrement de votre graphe. Veuillez vérifier votre connexion ou réessayer ultérieurement."}},export:{title:"Exporter le graphe",png:{title:"Exporter une capture d'écran en PNG",success:"L'exportation PNG de votre graphe a bien été enregistrée.",fields:{filename:"Nom du fichier",width:"Largeur (en pixels)",height:"Hauteur (en pixels)",preserve_camera:"Conserver la position actuelle de la caméra"}}},caption:{color:"Couleurs des {{itemType}}",size:"Tailles des {{itemType}}",title:"Légende",disabled:"La légende est disponible une fois que l'apparence a été définie."}},ide={title:"Statistiques",compute_one:"Calculer une métrique",compute:"Calculer les métriques",success_one:'La métrique "{{metrics}}" a été ajoutée aux données pour {{items}}.',success:'Les métriques "{{metrics}}" ont été ajoutées aux données pour {{items}}.',description:"Ce panneau permet de calculer de nouvelles attributs pour les nœuds ou les liens du graphe. Ces attributs peuvent ensuite être utilisés dans les autres panneaux, par exemple pour l'apparence ou le filtrage.",placeholder:"Sélectionner un algorithme",attributes_placeholder:"Aucun",nodes_attribute_already_exists:'Un attribut de nœud nommé "{{field}}" existe déjà. Ses valeurs seront remplacées.',edges_attribute_already_exists:'Un attribut de lien nommé "{{field}}" existe déjà. Ses valeurs seront remplacées.',nodes:{louvain:{title:"Détection de communautés Louvain",description:"Cet algorithme vise à diviser les nœuds en groupes densément connectés.",attributes:{modularityClass:"Nom de l'attribut de classe de modularité"},parameters:{getEdgeWeight:{title:"Attribut de poids de lien",description:"Un attribut de lien qui représente les poids des liens."},fastLocalMoves:{title:"Mouvements locaux rapides",description:"Indique s'il faut utiliser une optimisation bien connue basée sur une file d'attente pour traverser le graphe de manière plus efficace."},randomWalk:{title:"Marche aléatoire",description:"Indique s'il faut traverser le graphe de manière aléatoire."},resolution:{title:"Résolution",description:"Une résolution plus élevée devrait produire plus de communautés."}}},pagerank:{title:"PageRank",attributes:{pagerank:"Nom de l'attribut de PageRank"},parameters:{getEdgeWeight:{title:"Attribut de poids des liens"},alpha:{title:"Alpha"},maxIterations:{title:"Nombre maximal d'itérations"},tolerance:{title:"Tolérance"}}},betweennessCentrality:{title:"Centralité d'intermédiarité",attributes:{betweennessCentrality:"Nom de l'attribut de centralité d'intermédiarité"},parameters:{getEdgeWeight:{title:"Attribut de poids des liens"},normalize:{title:"Normaliser les résultats ?"}}},degree:{title:"Degré",attributes:{degree:"Nom de l'attribut de degré"},parameters:{getEdgeWeight:{title:"Attribut de poids des liens"},kind:{title:"Type de degré",values:{degree:"Degré",inDegree:"Degré entrant",outDegree:"Degré sortant"}}}},hits:{title:"HITS",attributes:{authorities:"Nom de l'attribut de score d'autorité",hubs:"Nom de l'attribut de score de hub"},parameters:{getEdgeWeight:{title:"Attribut de poids des liens"},maxIterations:{title:"Nombre maximal d'itérations"},normalize:{title:"Normaliser les résultats ?"},tolerance:{title:"Tolérance"}}},nodescript:{title:"Métrique personnalisée de nœud",description:"Définir une fonction qui calcule une métrique pour un nœud.",attributes:{custom:"Nom de l'attribut sur lequel stocker la métrique"}}},edges:{disparity:{title:"Disparité",attributes:{disparity:"Nom de l'attribut de disparité"},parameters:{getEdgeWeight:{title:"Attribut de poids des liens"}}},simmelianStrength:{title:"Force simmelienne",attributes:{simmelianStrength:"Nom de l'attribut de force simmelienne"}},edgescript:{title:"Métrique personnalisée de liens",description:"Définir une fonction qui calcule une métrique pour un lien.",attributes:{custom:"Nom de l'attribut sur lequel stocker la métrique"}}}},ade={title:"Spatialisation",description:"Ce panneau permet de calculer de nouvelles coordonnées pour les nœuds du graphe.",placeholder:"Sélectionner un algorithme de spatialisation",exec:{success:'La spatialisation "{{layout}}" a bien été appliquée.',started:"La spatialisation {{layout}} est en cours d'exécution",stopped:"La spatialisation {{layout}} a été arrêtée"},random:{title:"Aléatoire",description:"Positionne chaque nœud de manière aléatoire en choisissant uniformément les coordonnées dans l'intervalle [0, 1)",parameters:{scale:{title:"Échelle",description:"Échelle de la spatialisation"},center:{title:"Centre",description:"Centre de la spatialisation"}}},circular:{title:"Circulaire",description:"Dispose les nœuds en cercle",parameters:{scale:{title:"Échelle",description:"Échelle du cercle"},center:{title:"Centre",description:"Centre du cercle"}}},circlePack:{title:"CirclePack",description:"Dispose les nœuds comme un graphique en bulles, en fonction des attributs spécifiés",parameters:{scale:{title:"Échelle",description:"Échelle de la spatialisation"},groupingField:{title:"Attribut de hiérarchie",description:"Un attribut facultatif à utiliser pour regrouper les nœuds"},center:{title:"Centre",description:"Centre de la spatialisation"}}},fa2:{title:"ForceAtlas2",buttons:{autoSettings:{title:"Estimer les paramètres",description:"Génère des paramètres qui conviennent le mieux au graphe actuel"}},parameters:{adjustSizes:{title:"Tenir compte des tailles ?",description:"Les tailles des nœuds doivent-elles être prises en compte ?"},barnesHutOptimize:{title:"Optimisation de Barnes-Hut",description:"Indique s'il faut utiliser l'approximation de Barnes-Hut pour calculer la répulsion en O(n*log(n)) au lieu de O(n^2), n étant le nombre de nœuds"},barnesHutTheta:{title:"Theta de Barnes-Hut",description:"Paramètre theta de l'approximation de Barnes-Hut"},edgeWeightInfluence:{title:"Influence du poids des liens",description:"Influence des poids des liens sur la spatialisation"},gravity:{title:"Gravité",description:"Intensité de la gravité de la spatialisation"},linLogMode:{title:"Mode linLog",description:"Indique s'il faut utiliser le modèle LinLog de Noack."},outboundAttractionDistribution:{title:"Distribution de l'attraction sortante"},scalingRatio:{title:"Ratio de mise à l'échelle"},slowDown:{title:"Ralentir ?"},strongGravityMode:{title:"Mode de gravité intense ?"}}},force:{title:"Dirigée par la force",parameters:{attraction:{title:"Attraction",description:"Importance de la force d'attraction qui attire chaque paire de nœuds connectés comme des élastiques"},repulsion:{title:"Répulsion",description:"Importance de la force de répulsion qui attire chaque paire de nœuds comme des aimants"},gravity:{title:"Gravité",description:"Importance de la force de gravité qui attire tous les nœuds vers le centre"},inertia:{title:"Inertie",description:"Pourcentage du déplacement vectoriel d'un nœud qui est conservé à chaque étape. 0 signifie aucune inertie, 1 signifie aucune friction"},maxMove:{title:"Déplacement maximal",description:"Longueur maximale qu'un nœud peut parcourir à chaque étape, en pixels"}}},noverlap:{title:"Noverlap",description:"Algorithme de disposition anti-collision",parameters:{gridSize:{title:"Taille de la grille",description:"Nombre de cellules de la grille qui subdivisent horizontalement et verticalement l'espace du graphe. Cela est utilisé comme un schéma d'optimisation. Réglez-le sur 1 pour obtenir une complexité temporelle O(n²), qui peut parfois être plus performante avec très peu de nœuds."},margin:{title:"Marge",description:"Marge à conserver entre les nœuds"},expansion:{title:"Expansion",description:"Pourcentage de l'espace actuel que les nœuds peuvent tenter de dépasser"},ratio:{title:"Ratio",description:"Mise à l'échelle du ratio des tailles des nœuds"},speed:{title:"Vitesse",description:"Facteur d'amortissement qui ralentit les mouvements des nœuds pour faciliter l'ensemble du processus"}}},script:{title:"Spatialisation personnalisée",description:"Écrivez votre propre spatialisation en créant une fonction qui renvoie un objet {x, y} pour chaque nœud",parameters:{}}},ode={title:"Gestion des données",login_capabilities:"Vous pouvez vous connecter à GitHub depuis Gephi Lite pour enregistrer et charger des fichiers de graphe directement en tant que gists GitHub :"},sde={add:"Ajouter",all:"Tous",apply:"Appliquer",cancel:"Annuler",clear:"Effacer",close:"Fermer",collapse:"Réduire",confirm:"Confirmer",copy:"Copier",created:"Créé",delete:"Supprimer",edit:"Modifier",expand:"Agrandir",filename:"Nom du fichier",hide:"Masquer","load-more":"Charger plus",loading:"Chargement",min:"Min",max:"Max",none:"Aucun",open:"Ouvrir",open_file:"Ouvrir {{filename}}",open_code_editor:"Ouvrir l'éditeur de code",remove:"Supprimer",reset:"Réinitialiser",save:"Enregistrer","save-and-run":"Enregistrer et exécuter",select:"Sélectionner...",start:"Démarrer",stop:"Arrêter",size:"Taille",show:"Afficher",show_more:"Afficher plus",show_less:"Afficher moins",submit:"Soumettre",updated:"Mis à jour"},lde={github:{title:"GitHub",auth:{title:"Authentification GitHub",asking_for_device_code:"Demande d'un code d'appareil à GitHub",copy_code:`Copiez le code ci-dessous et cliquez sur le bouton "Ouvrir GitHub". Une nouvelle fenêtre s'ouvrira, sur laquelle GitHub vous demandera le code.`,copy_success:"Code enregistré dans le presse-papiers",waiting_validation:"En attente de validation"}}},cde={graph:{placeholder:"Rechercher des nœuds, des liens...",no_result:"Aucun résultat",help:"Saisissez quelque chose pour rechercher",other_result:"... et {{count}} autres résultats",select_all_nodes:"Ajouter {{count}} nœuds à la sélection",select_all_edges:"Ajouter {{count}} liens à la sélection"},nodes:{placeholder:"Rechercher un nœud...",no_result:"Aucun nœud trouvé",help:"Écrire quelque chose pour trouver un nœud",other_result:"... et {{count}} autres nœuds"},edges:{placeholder:"Rechercher un lien...",no_result:"Aucun lien trouvée",help:"Écrire quelque chose pour trouver un lien",other_result:"... et {{count}} autres liens"}},ude={title:"User's settings","danger-zone":{title:"Danger zone","reset-state":{title:"Mise à zéro de l'état de l'application",description:"Toutes les données courantes seront perdues, même celle stockée dans le navigateur. Voulez-vous continuer ?",success:"Mise à zéro de l'application"}}},dde={welcome:Vue,"gephi-lite":{title:"Gephi Lite",info:"Plus d'informations sur Gephi Lite"},error:que,user:Yue,menu:jue,providers:Wue,github:Kue,auth:Que,storage:Xue,context:Zue,selection:Jue,appearance:ede,filters:tde,edition:nde,graph:rde,statistics:ide,layouts:ade,file:ode,common:sde,cloud:lde,search:cde,settings:ude},fde={no_recent:"Ebben a böngészőben még nem nyitottak meg távoli fájlt.",logo:"Gephi logó",title:"Üdvözöljük a Gephi Lite-ban",open_graph:"Nyissa meg a grafikonfájlt","disclaimer-2":"Nyugodtan tekintse meg a GitHub projektet, ha többet szeretne megtudni a lehetséges funkciókról, vagy bejelentheti a hibákat.",open_recent:"Nyissa meg a legutóbbi lehetőséget","disclaimer-1":"A Gephi Lite jelenleg dolgozik.",samples:"Minták"},pde={open:{cloud:"Grafikon megnyitása a következő: {{provider}}",remote:"Távoli grafikon megnyitása",local:"Nyissa meg a helyi grafikont"},download:{gexf:"Mentse el a grafikont helyileg","gexf-error":"Hiba történt a GEXF fájl generálásakor"},save:{default:"Mentés",cloud:"Mentés itt: {{provider}} mint..."}},gde={circular:{title:"Kör alakú",description:"A csomópontot körbe rendezi",parameters:{center:{title:"Középpont",description:"Az elrendezés középpontja"},scale:{title:"Skála",description:"Az elrendezés léptéke"}}},circlePack:{parameters:{groupingField:{description:"Nem kötelező attribútum a csomópontok csoportosításához",title:"Hierarchia attribútum"},scale:{description:"Az elrendezés léptéke",title:"Skála"},center:{title:"Középpont",description:"Az elrendezés középpontja"}},description:"Buborékdiagramként rendezi el a csomópontokat a megadott attribútumoknak megfelelően",title:"Körcsomag"},title:"Elrendezés",random:{title:"Véletlen",parameters:{scale:{title:"Skála",description:"Az elrendezés léptéke"},center:{description:"Az elrendezés középpontja",title:"Központi"}},description:"Véletlenszerű elrendezés minden csomópont pozicionálása az egyes koordináták egyenletes, véletlenszerű kiválasztásával az intervallum [0, 1)"},placeholder:"Válasszon elrendezési algoritmust",fa2:{title:"ForceAtlas2",parameters:{adjustSizes:{description:"Figyelembe kell venni a csomópontok méretét?",title:"Méretek beállítása?"},linLogMode:{title:"linLog mód",description:"Használja-e a Noack LinLog modelljét."},gravity:{description:"Az elrendezés gravitációjának erőssége",title:"Gravitáció"},outboundAttractionDistribution:{title:"Kifelé kötött vonzás eloszlása"},strongGravityMode:{title:"Erős gravitációs mód?"},edgeWeightInfluence:{title:"A szélek súlyának hatása",description:"Az él súlyának hatása az elrendezésre"},scalingRatio:{title:"Méretezési arány"},slowDown:{title:"Lassú letöltés?"},barnesHutTheta:{title:"barnesHutTheta",description:"Barnes-Hut közelítő théta paraméter"},barnesHutOptimize:{description:"Hogy a Barnes-Hut közelítést használja-e a taszítás kiszámításához O(n*log(n)) értékben az alapértelmezett O(n^2) helyett, ahol n a csomópontok száma",title:"barnesHutOptimize"}},buttons:{autoSettings:{title:"Találd meg a beállításokat",description:"Olyan beállításokat állít elő, amelyek a legjobban illeszkednek az aktuális grafikonhoz"}}},description:"Ez a panel lehetővé teszi új koordináták kiszámítását a grafikon csomópontjaihoz. ",force:{title:"Kényszer irányított",parameters:{inertia:{title:"Tehetetlenség",description:"Az egyes lépésekben megőrzött csomópontvektor-eltolódás százalékos aránya. A 0 azt jelenti, hogy nincs tehetetlenség, az 1 azt jelenti, hogy nincs súrlódás"},attraction:{title:"Vonzerő",description:"A vonzási erő fontossága, amely minden egyes összekapcsolt csomópontpárt rugalmasként vonz"},repulsion:{description:"A taszító erő jelentősége, amely mágnesként vonzza az egyes csomópontokat",title:"Taszítás"},gravity:{title:"Gravitáció",description:"A gravitációs erő jelentősége, amely minden csomópontot a központba vonz"},maxMove:{title:"Maximális mozgás",description:"Maximális hossza, amelyet egy csomópont minden lépésnél megtehet, pixelben"}}},script:{title:"Egyedi elrendezés",description:"Írja meg saját elrendezését egy olyan függvény létrehozásával, amely minden csomóponthoz egy {x,y} objektumot ad vissza"},noverlap:{parameters:{speed:{title:"Sebesség",description:"Csillapító tényező, amely lelassítja a csomópontok mozgását, hogy megkönnyítse az általános folyamatot"},expansion:{description:"Az aktuális tér azon százaléka, amelyen a csomópontok megpróbálhatnak kimozdulni",title:"Terjeszkedés"},gridSize:{description:"A grafikon terét vízszintesen és függőlegesen felosztó rácscellák száma. Ezt optimalizálási sémaként használják. Állítsa 1-re, és O(n²) időbonyolultságú lesz, ami néha nagyon kevés csomóponttal jobban teljesít.",title:"Rács mérete"},margin:{description:"A csomópontok között megtartandó margó",title:"Margó"},ratio:{title:"Hányados",description:"A csomópontok méretaránya"}},title:"Átfedés",description:"Ütközésgátló elrendezési algoritmus"},exec:{success:'Az elrendezés"{{layout}}" alkalmazása sikeresen megtörtént.',stopped:"Az elrendezés {{layout}} leállt",started:"Az elrendezés {{layout}} fut"}},mde={topological:"Topológia",add_filter:"Szűrő hozzáadása",activated:"Aktivált szűrő",no_concurrent_edit:"Egyszerre csak egy szűrő szerkeszthető. A szűrő szerkesztéséhez erősítse meg az aktuális szűrőt.",full_graph:"Teljes grafikon",desactivated:"Deaktivált szűrő, kattintson az újraaktiváláshoz",script:"Egyedi szűrő",terms:"pontos értékek",description:"Ez a panel lehetővé teszi a grafikon szűrését szűrők halmozásával.",using:"Használat",filter:"Szűrő",inapplicable:"Szűrő letiltva: csak egy érték áll rendelkezésre",create_filter:"Szűrő létrehozása",keepMissingValues:"Tartsa meg a hiányzó értékeket",title:"Szűrők",range:"tartomány"},hde={edges:{simmelianStrength:{title:"Szimmeli erő",attributes:{simmelianStrength:"Simmelian erősség attribútum neve"}},edgescript:{description:"Határozzon meg egy függvényt, amely egy él metrikáját számítja ki.",attributes:{custom:"Attribútumnév, amelyen tárolni kívánja a metrikát"},title:"Egyéni élmutató"},disparity:{parameters:{getEdgeWeight:{title:"Élsúly attribútum"}},title:"Különbség",attributes:{disparity:"Disparity attribútum neve"}}},nodes:{nodescript:{title:"Egyéni csomóponti mérőszám",attributes:{custom:"Attribútumnév, amelyen tárolni kívánja a metrikát"},description:"Határozzon meg egy függvényt, amely egy csomópont metrikáját számítja ki."},hits:{parameters:{tolerance:{title:"Megfelelő"},maxIterations:{title:"Max. iterációk"},getEdgeWeight:{title:"Élsúly attribútum"},normalize:{title:"Normalizálja a kimenetet?"}},attributes:{hubs:"Hub pontszám attribútum neve",authorities:"Authority score attribútum neve"},title:"LÁTÁSOK"},degree:{parameters:{kind:{title:"A kimenet típusa",values:{degree:"Fokozat",inDegree:"Bejövő fokozat",outDegree:"Kimenő fokozat"}},getEdgeWeight:{title:"Élsúly attribútum"}},attributes:{degree:"Fokozat attribútum neve"},title:"Fokozat"},pagerank:{parameters:{maxIterations:{title:"Max. iterációk"},tolerance:{title:"Megértés"},getEdgeWeight:{title:"Élsúly attribútum"},alpha:{title:"Alpha"}},title:"PageRank",attributes:{pagerank:"PageRank attribútum neve"}},betweennessCentrality:{parameters:{getEdgeWeight:{title:"Élsúly attribútum"},normalize:{title:"Normalizálja a kimenetet?"}},attributes:{betweennessCentrality:"Közötti központiság attribútum neve"},title:"Közötti központiság"},louvain:{description:"Ennek az algoritmusnak az a célja, hogy a csomópontokat sűrűn összefüggő csoportokká bontsa fel.",parameters:{getEdgeWeight:{description:"Egy élattribútum, amely élsúlyokat jelentene.",title:"Élsúly attribútum"},resolution:{description:"A nagyobb felbontásnak több közösséget kell létrehoznia.",title:"Felbontás"},fastLocalMoves:{title:"Gyors helyi mozgás",description:"Hogy használjunk-e egy jól ismert optimalizálást, amely egy sorkészletre támaszkodik a grafikon hatékonyabb bejárása érdekében."},randomWalk:{description:"A grafikon véletlenszerű bejárása.",title:"Véletlenszerű járat"}},title:"Louvain közösség észlelése",attributes:{modularityClass:"Modularitás osztály attribútum neve"}}},edges_attribute_already_exists:'A "{{field}}" nevű élattribútum már létezik. Értékei felülíródnak.',success:'A(z) {{items}} "{{metrics}}" mérőszám hozzáadásra került az adatokhoz.',nodes_attribute_already_exists:'A "{{field}}" nevű csomópont-attribútum már létezik. Értékei felülíródnak.',compute:"Számítsa ki a mérőszámokat",compute_one:"Számítsa ki a mérőszámot",placeholder:"Válasszon ki egy algoritmust",attributes_placeholder:"Egyik sem",success_one:'A(z) {{items}} "{{metrics}}" mutató hozzáadva az adatokhoz.',description:"Ez a panel lehetővé teszi új attribútumok kiszámítását a gráf csomópontjaihoz vagy éleihez. Ezek az attribútumok később felhasználhatók a többi panelen, például megjelenéshez vagy szűréshez.",title:"Statisztika"},_de={update_this_edges:"Szerkessze ezt az élt",delete_edges_one:"Egy él törlése",update_edges:"Meglévő él szerkesztése",update_nodes:"Meglévő csomópont szerkesztése",create_nodes_success:"A csomópont sikeresen létrejött.",delete_nodes_one:"Töröljön egy csomópontot",delete_nodes_zero:"Csomópontok törlése",delete_this_edges:"Törölje ezt az élt",update_edges_success:"Az él frissítése sikeresen megtörtént.",update_this_nodes:"Szerkessze ezt a csomópontot",delete_this_nodes:"Törölje ezt a csomópontot",delete_edges_zero:"Élek törlése",update_nodes_success:"A csomópont frissítése sikeresen megtörtént.",create_nodes:"Új csomópont létrehozása",create_edges_success:"Az él sikeresen létrejött.",create_edges:"Új él létrehozása",search_nodes:"Keresés a csomópontcímkék között...",confirm_delete_nodes_one:"Biztosan törli ezt az egy csomópontot?",confirm_delete_edges:"Biztosan törölni szeretne {{count}} élt?",confirm_delete_nodes:"Biztosan törölni szeretne {{count}} csomópontot?",delete_edges:"{{count}} él törlése",delete_nodes:"Töröljön {{count}} csomópontot",confirm_delete_edges_one:"Biztosan törli ezt az egy élt?"},vde={sign_in:"Jelentkezzen be a GitHubba",unauth_success:"Az azonosítás sikeres volt",sign_out:"Jelentkezzen ki a GitHubból"},Ede={color:{source:"Forrás csomópontok",quali:"mint húrok",set_color_from:"Szín beállítása innen:...",quanti:"mint számok",scale_point:"Skálapont",title:"Szín",source_description:"Minden él forrásként színezett.",target:"Célcsomópontok",data:"Bemeneti fájl",fixed:"Állandó szín",target_description:"Minden él célpontként színezett.",ranking_intro:"Adjon hozzá színpontokat ezen a skálán",data_description:"Az összes {{items}} szín olyan, mint a bemeneti adatfájlban.",color_all_items:"Minden {{items}} szín",default_value:"A(z) {{items}} színe érvényes érték nélkül"},labels:{density:"Hány címke jelenjen meg bármikor",none:"Nincs cimke",set_labels_from:"Címke beállítása innen...",fixed:"Állandó szöveg",set_labels_size_from:"Címkeméretek beállítása innen...",adapts_to_zoom:"Mennyire nőjenek a címkék a nagyítással",fixed_size:"Fix méret",title:"Címkék",data:"Beviteli adat",size_coef:"Címkeméretek (a nagyobb címkék nagyobbnak tűnnek)",data_description:"Az összes {{items}} címke olyan, mint a bemeneti adatfájlban.",fixed_label_size:"Címkeméret minden {{items}} esetben",none_description:"Az összes {{items}} elemnek nincs megjelenített címkéje.",fixed_label:"Minden cimke {{items}}",default_value:"A {{items}} címke érvényes érték nélkül",size:"{{items}} méret"},show_edges:"Élek megjelenítése",transformation_methods:{title:"Átalakítási módszerek",linear:"lineáris",sqrt:"sqrt","pow-2":"pow 2",log:"log",spline:"spline","pow-3":"pow 3"},ranking:"Rangsorolás",size:{title:"Méret",fixed:"Állandó méretű",data:"Bemeneti fájl",set_size_from:"Méret beállítása innen:...",default_value:"{{items}} mérete érvényes érték nélkül",size_all_items:"Méret az összes {{items}} számára",data_description:"Minden {{items}} méret megegyezik a bemeneti adatfájlban."},no_caption:"(nincs felirat)",title:"Kinézet",partition:"Partíció"},bde={unselect_all_hidden_nodes:"Törölje az összes rejtett él kijelölését",hidden_edges_one:"Egy rejtett kiválasztott él",unselect_edges:"Törölje ennek az élnek a kijelölését",unselect_all:"Minden kijelölés megszüntetése",nodes_one:"Egy kiválasztott csomópont",focus_edges:"Csak ezt az élt válassza ki",edges_zero:"Nincs kiválasztott él",hidden_nodes_one:"Egy rejtett kiválasztott csomópont",select_all:"Mindet kiválaszt",visible_edges_one:"Egy látható kiválasztott él",node_no_label:"(Üres címke)",locate_on_graph:"Keresse meg a grafikonon",visible_nodes_zero:"Nincs látható kiválasztott csomópont",edge_no_label:"(Üres címke)",unselect_nodes:"Törölje a csomópont kijelölését",visible_edges_zero:"Nincs látható kiválasztott él",focus_nodes:"Csak ezt a csomópontot válassza ki",empty_nodes:"Ennek a csomópontnak nincs attribútuma",edges_one:"Egy kiválasztott él",visible_nodes_one:"Egy látható kiválasztott csomópont",empty_edges:"Ennek az élnek nincs attribútuma",nodes_zero:"Nincs kiválasztott csomópont",unselect_all_hidden_edges:"Törölje az összes rejtett él kijelölését",visible_edges:"{{count}} látható kijelölt él",edges:"{{count}} kiválasztott él",visible_nodes:"{{count}} látható kiválasztott csomópont",nodes:"{{count}} kiválasztott csomópont",hidden_edges:"{{count}} rejtett kijelölt él",hidden_nodes:"{{count}} rejtett kiválasztott csomópont"},Sde={not_found:{paragraph:"Lehet, hogy rosszul írta be a címet, vagy az oldal elköltözött.",subtitle:"A keresett oldal nem létezik.",title:"Az oldal nem található"},unknown:"Ismeretlen hiba lépett fel.",title:"Hiba"},yde={title:"Adatok áttekintése"},Tde={github:"GitHub"},Cde={select_ui_language:"Válassza ki az alkalmazás nyelvét",title:"GitHub hitelesítés",logged_as:"Jelenleg {{username}} néven van bejelentkezve a GitHubba.",description:"A GitHubba bejelentkezhet a Gephi Lite alkalmazásból, hogy közvetlenül GitHub Gists néven mentse és töltse be a grafikonfájlokat."},Rde={cannot_restore:"A grafikonját nem lehet visszaállítani.",restore_successful:"Munkadiagramja visszaállításra került."},Nde={avatar_alt:"{{name}} avatarja"},Ade={nodes:{help:"Írjon be valamit a csomópont kereséséhez",other_result:"... és {{count}} másik csomópont",placeholder:"Csomópont keresése...",no_result:"Nem található csomópont"},edges:{help:"Írjon be valamit, hogy megtalálja az élt",placeholder:"Keress egy élt...",no_result:"Nem található él",other_result:"... és {{count}} másik él"},graph:{no_result:"Nincs eredmény",select_all_nodes:"Adjon hozzá {{count}} csomópontot a kijelöléshez",help:"Írjon be valamit a kereséshez",other_result:"... és további {{count}} találat",select_all_edges:"Adjon hozzá {{count}} élt a kijelöléshez",placeholder:"Csomópontok, élek keresése..."}},wde={hide:"Rejtett",start:"Rajt",edit:"Szerkeszt",show_more:"Mutass többet",updated:"Frissítve",save:"Mentés",collapse:"Összeomlás",add:"Hozzáadás",created:"Létrehoz",all:"Minden","load-more":"Töltsön be többet","save-and-run":"Mentse el és futtassa",max:"Maximum",open_code_editor:"Nyissa meg a kódszerkesztőt",clear:"Egyértelmű",stop:"Állj meg",delete:"Töröl",cancel:"Megszünteti",show:"Mutasd meg",copy:"Másolat",confirm:"Megerősít",select:"Válogatás...",reset:"Visszaállítás",open:"Kinyit",open_file:"Nyissa ki {{filename}}",show_less:"Mutass kevesebbet",none:"Egyik sem",filename:"Fájl neve",expand:"Kiterjesztett",apply:"Alkalmaz",submit:"Beküldés",loading:"Betölt",remove:"Távolítsa el",size:"Méret",close:"Bezárás",min:"Min"},Ode={github:{auth:{copy_success:"A kód a vágólapra mentve",asking_for_device_code:"Eszközkód kérése a Githubtól",title:"GitHub hitelesítés",waiting_validation:"Érvényesítésre vár",copy_code:'Másolja ki az alábbi kódot, és kattintson az "Open GitHub" gombra. Megnyílik egy új lap, amelyen a GitHub megkérdezi a kódot'},title:"GitHub"}},xde={title:"Adatkezelés",login_capabilities:"A GitHubba bejelentkezhet a Gephi Lite alkalmazásból, hogy közvetlenül GitHub Gistsként mentse és töltse be a grafikonfájlokat:"},Dde={export:{png:{fields:{height:"Magasság (pixelben)",width:"Szélesség (pixelben)",preserve_camera:"A kamera jelenlegi pozíciójának megőrzése",filename:"Fájl neve"},title:"PNG-pillanatkép exportálása",success:"A grafikon PNG-exportálása sikeresen elmentve."},title:"Grafikon exportálása"},save:{cloud:{field:{description:"Leírás",filename:"Fájl neve",isPublic:"Hozzon létre egy nyilvános tartalmat"},title:"Mentés a(z) {{provider}} szolgáltatásba másként...",error:"Hiba történt a diagram mentése közben. Kérjük, ellenőrizze a kapcsolatot, vagy próbálkozzon később.",success:"A(z) {{filename}} fájl sikeresen elmentve"},title:"Grafikon mentése"},model:{"edges-data":{"new-attribute":"Új attribútum hozzáadása",attributes:"Egyéb attribútumok",source:"Él forrása",target:"Élcélpont",color:"Él színe","attribute-name":"Attribútum neve",label:"Élcímke",id:"Él ID",weight:"Él súlya","attribute-value":"Attribútum értéke"},"nodes-data":{attributes:"Egyéb attribútumok","new-attribute":"Új attribútum hozzáadása",color:"Csomópont színe","attribute-name":"Attribútum neve",label:"Csomópont címke","attribute-value":"Attribútum értéke",size:"Csomópont mérete",id:"csomópont azonosítója",x:"Csomópont x pozició",y:"Csomópont y pozició"},nodes_zero:"csomópont",undirected:"Irányítatlan",attribute:{quantitative:"Mennyiség",qualitative:"Minőségi"},edges_one:"él",mixed:"Vegyes",nodes:"csomópontok",edges_zero:"él",nodes_one:"csomópont",no_attributes:"A modellben még nincs attribútum.",directed:"Irányított",title:"Attribútumok modellje",edges:"élek"},partitioning:{status_no_partition:"A(z) {{items}} nincs particionálva",partition:"Partíció {{items}} bekapcsolva",status_partition:"{{nbPartitions}} partíció a '{{attribute}}' attribútum használatával.",title:"Partícionálás",warning_nbMissing:"Az {{nbMissingValues}} {{items}} nem rendelkezik értékkel ehhez az attribútumhoz.",description:"Ha eltérően szeretné alkalmazni a megjelenést vagy a szűrőket az {{items}} különböző csoportjaira, particionálja a grafikont bármely csomóponti minőségi attribútum használatával.",missing_partition:"Ezek egy „hiányzó érték” partícióba vannak csoportosítva.",status_item:"A(z) {{items}} csoportba vannak csoportosítva",status_item_preview:"A(z) {{items}} csoportba kerül",missing_partition_preview:"Ezek egy „hiányzó érték” partícióba lesznek csoportosítva."},caption:{title:"Felirat",disabled:"A felirat a megjelenés beállítása után érhető el.",color:"Szín: {{itemType}}",size:"Méret: {{itemType}}"},metadata:{keywords:"Kulcsszavak",title:"adat az adatról",authors:"Szerző",description:"Leírás","graph-title":"Cím","graph-type":"Grafikon típusa"},control:{zoomIn:"Nagyítás",fullscreenExit:"Lépjen ki a teljes képernyőből",zoomReset:"Lásd a teljes grafikont",zoomOut:"Kicsinyítés",fullscreenEnter:"Lépjen be a teljes képernyős módba"},open:{local:{title:"Nyisson meg egy helyi fájlt",error:"Hiba történt a fájl megnyitásakor. Kérjük, ellenőrizze, hogy a fájl érvényes GEXF-e.",dragndrop_text:"Fogd és vidd egy GEXF fájlt",success:"A(z) {{filename}} fájl sikeresen betöltve"},cloud:{title:"Nyisson meg egy fájlt a következőtől {{provider}}",error:"Technikai hiba történt. Kérjük, ellenőrizze a kapcsolatot, vagy próbálkozzon később.","select-file":"Válasszon ki egy fájlt","no-data":"Nincs mentve GEXF-fájl a(z) {{provider}} webhelyen","file-open-external":"Nyissa meg a(z) {{filename}} fájlt a(z) {{provider}} webhelyen",success:"A(z) {{filename}} fájl sikeresen betöltve"},title:"Nyisson meg egy grafikonfájlt",remote:{title:"Nyisson meg egy URL-t",error:"Hiba történt a fájl megnyitásakor. Kérjük, ellenőrizze a csatlakozást, és hogy a fájl érvényes GEXF-e.",success:"A(z) {{filename}} fájl sikeresen betöltve","url-field":"A GEXF fájl URL-je"}},title:"Grafikon"},Ide={welcome:fde,menu:pde,layouts:gde,filters:mde,statistics:hde,edition:_de,auth:vde,appearance:Ede,selection:bde,error:Sde,context:yde,providers:Tde,github:Cde,storage:Rde,"gephi-lite":{title:"Gephi Lite",info:"További információ a Gephi Lite-ról"},user:Nde,search:Ade,common:wde,cloud:Ode,file:xde,graph:Dde},Mde={export:{png:{fields:{height:"높이 (픽셀 수)",width:"폭 (픽셀 수)",preserve_camera:"현재 카메라 위치 유치",filename:"파일 이름"},title:"PNG 스냅샷 내보내기",success:"그래프 PNG 내보내기가 성공적으로 저장되었습니다."},title:"그래프 내보내기"},save:{cloud:{field:{description:"설명",filename:"파일 이름",isPublic:"공개 요지 생성"},title:"{{provider}}에 다음으로 저장...",error:"그래프를 저장하는 동안 오류가 발생했습니다. 연결을 확인하거나 나중에 시도하세요.",success:"{{filename}} 파일이 성공적으로 저장되었습니다"},title:"그래프 저장"},model:{"edges-data":{"new-attribute":"새 속성 추가",attributes:"기타 속성",source:"엣지 시작점",target:"엣지 도착점",color:"엣지 색상","attribute-name":"속성 이름",label:"엣지 라벨",id:"엣지 ID",weight:"엣지 가중치","attribute-value":"속성 값"},"nodes-data":{attributes:"기타 속성","new-attribute":"새 속성 추가",color:"노드 색상","attribute-name":"속성 이름",label:"노드 라벨","attribute-value":"속성 값",size:"노드 크기",id:"노드 ID",x:"노드 x 위치",y:"노드 y 위치"},nodes_zero:"노드",undirected:"비방향성",attribute:{quantitative:"정량적",qualitative:"정성적"},edges_one:"엣지",mixed:"혼합적",nodes:"노드",edges_zero:"엣지",nodes_one:"노드",no_attributes:"모델에 아직 속성이 없습니다.",directed:"방향성",title:"속성의 모델",edges:"엣지"},partitioning:{status_no_partition:"{{items}}가 분할되지 않았습니다",partition:"{{items}}를 분할",status_partition:"'{{attribute}}' 속성을 사용하는 {{nbPartitions}} 파티션.",title:"파티션",warning_nbMissing:"{{nbMissingValues}} {{items}}가 해당 속성에 대한 값을 가지고 있지 않습니다.",description:"{{items}}의 다른 그룹에 모양이나 필터를 다르게 적용하려면 노드 질적 속성을 사용하여 그래프를 분할하세요.",missing_partition:"그들은 '누락된 값'이라는 파티션으로 그룹화됩니다.",status_item:"{{items}}가 다음으로 그룹화됩니다",status_item_preview:"{{items}}가 다음으로 그룹화됩니다",missing_partition_preview:"그들은 '누락된 값'이라는 파티션으로 그룹화됩니다."},caption:{title:"캡션",disabled:"모양이 설정되면 캡션을 사용할 수 있습니다.",color:"{{itemType}}을 색칠",size:"{{itemType}}의 크기 지정"},metadata:{keywords:"키워드",title:"메타데이터",authors:"저자",description:"설명","graph-title":"제목","graph-type":"그래프 유형"},control:{zoomIn:"확대",fullscreenExit:"전체 화면 모드 해제",zoomReset:"전체 그래프 보기",zoomOut:"축소",fullscreenEnter:"전체 화면 모드"},open:{local:{title:"로컬 파일 열기",error:"파일을 읽는 동안 오류가 발생했습니다. 유효한 GEXF 파일인지 확인하세요.",dragndrop_text:"GEXF 파일을 끌어다 놓기",success:"{{filename}} 파일이 성공적으로 로드되었습니다"},cloud:{title:"{{provider}}에서 파일 열기",error:"기술적 오류가 발생했습니다. 연결을 확인하거나 나중에 시도하세요.","select-file":"파일 선택","no-data":"{{provider}}로 저장된 GEXF 파일이 없습니다","file-open-external":"{{provider}}에서 {{filename}} 파일 열기",success:"{{filename}} 파일이 성공적으로 로드되었습니다"},title:"그래프 파일 열기",remote:{title:"URL 열기",error:"파일을 읽는 동안 오류가 발생했습니다. 연결 여부 및 유효한 GEXF 파일인지 확인하세요.",success:"{{filename}} 파일이 성공적으로 로드되었습니다","url-field":"GEXF 파일의 URL"}},title:"그래프"},Lde={search_nodes:"노드 라벨 검색...",update_this_edges:"엣지 수정",delete_edges_one:"엣지 하나 삭제",update_edges:"기존 엣지 편집",update_nodes:"기존 노드 편집",create_nodes_success:"노드가 성공적으로 생성됐습니다.",confirm_delete_nodes_one:"이 노드 하나를 삭제하시겠습니까?",delete_nodes_one:"노드 하나 삭제",delete_nodes_zero:"노드 삭제",delete_this_edges:"엣지 삭제",update_edges_success:"엣지가 성공적으로 업데이트됐습니다.",confirm_delete_edges:"{{count}} 개 엣지를 삭제하시겠습니까?",update_this_nodes:"노드 수정",delete_this_nodes:"노드 삭제",delete_edges_zero:"엣지 삭제",update_nodes_success:"노드가 성공적으로 업데이트됐습니다.",confirm_delete_nodes:"{{count}} 개 노드를 삭제하시겠습니까?",delete_edges:"{{count}} 개 엣지 삭제",delete_nodes:"{{count}} 개 노드 삭제",create_nodes:"새 노드 생성",create_edges_success:"엣지가 성공적으로 생성됐습니다.",create_edges:"새 엣지 생성",confirm_delete_edges_one:"이 노드 하나를 삭제하시겠습니까?"},kde={no_recent:"해당 브라우저에서 아직 원격 파일이 열리지 않았습니다.",logo:"Gephi 로고",title:"Gephi Lite에 오신 것을 환영합니다",open_graph:"그래프 파일 열기","disclaimer-2":"향후의 기능을 알아 보거나 버그를 보고하려면 GitHub 프로젝트를 확인하세요.",open_recent:"최근 열기","disclaimer-1":"Gephi Lite는 현재 진행 중인 작업입니다.",samples:"예제"},Pde={nodes:{louvain:{description:"이 알고리즘은 노드들을 조밀하게 연결된 그룹으로 분리하는 것을 목표로 합니다.",parameters:{getEdgeWeight:{description:"엣지의 가중치를 표현하는 속성.",title:"엣지 가중치 속성"},resolution:{description:"해상도가 올라가면 더 많은 커뮤니티를 생성합니다.",title:"그룹화 해상도"},fastLocalMoves:{title:"빠른 로컬 이동",description:"그래프를 보다 효율적으로 탐색하기 위해 대기열 세트에 의존하는 잘 알려진 최적화를 사용할지 여부."},randomWalk:{description:"그래프를 무작위로 탐색할지 여부.",title:"무작위 이동"}},title:"Louvain 커뮤니티 탐지",attributes:{modularityClass:"모듈성 클래스 속성 이름"}},nodescript:{title:"커스텀 노드 메트릭",attributes:{custom:"메트릭을 저장할 속성 이름"},description:"노드의 메트릭을 계산하는 함수를 정의합니다."},hits:{parameters:{tolerance:{title:"수렴 허용도"},maxIterations:{title:"최대 반복"},getEdgeWeight:{title:"엣지 가중치 속성"},normalize:{title:"출력 정규화 할까요?"}},attributes:{authorities:"신뢰도 점수 속성 이름",hubs:"허브 점수 속성 이름"},title:"HITS(하이퍼링크 기반 주제 검색)"},degree:{parameters:{kind:{title:"차수 유형",values:{inDegree:"진입 차수",outDegree:"진출 차수",degree:"차수"}},getEdgeWeight:{title:"엣지 가중치 속성"}},attributes:{degree:"차수 속성 이름"},title:"차수"},pagerank:{title:"PageRank",parameters:{getEdgeWeight:{title:"엣지 가중치 속성"},maxIterations:{title:"최대 반복"},alpha:{title:"알파"},tolerance:{title:"수렴 허용도"}},attributes:{pagerank:"PageRank 속성 이름"}},betweennessCentrality:{parameters:{getEdgeWeight:{title:"엣지 가중치 속성"},normalize:{title:"출력 정규화 할까요?"}},title:"매개 중심성",attributes:{betweennessCentrality:"매개 중심성 속성 이름"}}},edges:{simmelianStrength:{title:"Simmelian 강도",attributes:{simmelianStrength:"Simmelian 강도 속성 이름"}},edgescript:{description:"엣지의 메트릭을 계산하는 함수를 정의합니다.",attributes:{custom:"메트릭을 저장할 속성 이름"},title:"커스텀 엣지 메트릭"},disparity:{parameters:{getEdgeWeight:{title:"엣지 가중치 속성"}},title:"불균형도",attributes:{disparity:"불균형도 속성 이름"}}},edges_attribute_already_exists:'"{{field}}"라는 이름의 엣지 속성이 이미 존재합니다. 새로운 값으로 덮어씌워집니다.',success:'{{items}}의 "{{metrics}}" 메트릭이 데이터에 추가되었습니다.',nodes_attribute_already_exists:'"{{field}}"라는 이름의 노드 속성이 이미 존재합니다. 새로운 값으로 덮어씌워집니다.',compute:"메트릭 계산",compute_one:"메트릭 계산",placeholder:"알고리즘 선택",attributes_placeholder:"없음",success_one:'{{items}}의 "{{metrics}}" 메트릭이 데이터에 추가되었습니다.',description:"이 패널에서 그래프의 노드나 엣지에 대한 새 속성을 계산할 수 있습니다. 이들 속성은 다른 패널에서, 예를 들어 모양이나 필터링을 위해 사용될 수 있습니다.",title:"통계"},Fde={open:{cloud:"{{provider}}에서 그래프 열기",remote:"원격 그래프 열기",local:"로컬 그래프 열기"},save:{cloud:"{{provider}}를 다음 이름으로 저장...",default:"저장"},download:{gexf:"그래프를 로컬에 저장","gexf-error":"GEXF 파일을 생성하는 중 오류 발생"}},Ude={color:{data_description:"모든 {{items}} 색상은 입력 데이터 파일과 동일합니다.",source:"소스 노드",quali:"문자열로",set_color_from:"색상 지정...",color_all_items:"모든 {{items}} 색상",quanti:"숫자로",scale_point:"스케일 점",title:"색상",source_description:"각 엣지는 자신의 소스와 같은 색상으로 표시됩니다.",target:"타겟 노드",data:"입력 파일",fixed:"일정한 색상",target_description:"각 엣지는 자신의 타겟과 같은 색상으로 표시됩니다.",default_value:"유효한 값이 없는 {{items}} 색상",ranking_intro:"스케일에 색상 점 추가"},labels:{density:"얼마나 많은 라벨이 표시되어야 하는지",size_coef:"라벨 크기 (높은 값이 크게 표시됨)",data_description:"{{items}} 모든 라벨은 입력 데이터 파일에 있는 것과 같습니다.",none:"라벨 없음",set_labels_from:"라벨 설정...",fixed:"기본 텍스트",fixed_label_size:"모든 {{items}} 라벨 크기",none_description:"{{items}} 모두 표시된 라벨이 없습니다.",set_labels_size_from:"라벨 크기 설정...",adapts_to_zoom:"줌 할 때 라벨이 얼마나 커져야 하는지",fixed_label:"모든 {{items}} 라벨",fixed_size:"고정 크기",default_value:"유효값을 갖지 않는 {{items}}의 라벨",title:"라벨",data:"데이터 입력",size:"{{items}} 크기"},show_edges:"엣지 보이기",transformation_methods:{title:"변환 방법",sqrt:"제곱근","pow-2":"2제곱",log:"로그",spline:"곡선",linear:"선형적","pow-3":"3제곱"},ranking:"순위",size:{title:"크기",fixed:"기본 크기",default_value:"유효값을 갖지 않는 {{items}}의 크기",data:"입력 파일",set_size_from:"크기 설정...",size_all_items:"{{items}} 모두의 크기",data_description:"{{items}} 모두의 크기는 입력 데이터 파일에 있는 것과 같습니다."},no_caption:"(캡션 없음)",title:"모양",partition:"분할"},Bde={topological:"연결 관계",add_filter:"필터 추가",activated:"활성화된 필터",no_concurrent_edit:"한 번에 하나의 필터만 편집할 수 있습니다. 이 필터를 수정하려면 현재 버전을 확인해 주세요.",full_graph:"전체 그래프",desactivated:"비활성화된 필터, 다시 활성화 하려면 클릭해 주세요",script:"사용자 정의 필터",terms:"정확한 값",description:"이 패널에서는 여러 필터를 적용하여 그래프를 필터링 할 수 있습니다.",using:"적용",filter:"필터",inapplicable:"필터 비활성화됨: 하나의 값만 사용 가능",range:"범위",create_filter:"필터 생성",keepMissingValues:"누락된 값 유지",title:"필터"},Gde={sign_in:"GitHub로 로그인",unauth_success:"인증 취소가 성공적으로 완료됐습니다",sign_out:"GitHub에서 로그아웃"},$de={unselect_all_hidden_nodes:"전체 숨김 엣지 선택 해제",hidden_edges_one:"1개의 선택된 숨김 엣지",unselect_edges:"엣지 선택 해제",unselect_all:"전체 선택 해제",visible_edges:"{{count}} 개의 선택된 가시 엣지",nodes_one:"1개의 선택된 노드",focus_edges:"해당 엣지만 선택",edges:"{{count}} 개의 선택된 엣지",edges_zero:"선택된 엣지 없음",visible_nodes:"{{count}} 개의 선택된 가시 노드",hidden_nodes_one:"1개의 선택된 숨김 노드",select_all:"전체 선택",visible_edges_one:"1개의 선택된 가시 엣지",node_no_label:"(빈 라벨)",locate_on_graph:"그래프에서 찾기",nodes:"{{count}} 개의 선택된 노드",visible_nodes_zero:"선택된 가시 노드 없음",edge_no_label:"(빈 라벨)",hidden_edges:"{{count}} 개의 숨김 엣지",hidden_nodes:"{{count}} 개의 선택된 숨김 노드",unselect_nodes:"노드 선택 해제",visible_edges_zero:"선택된 가시 엣지 없음",focus_nodes:"해당 노드만 선택",empty_nodes:"노드에 속성이 없습니다",edges_one:"1개의 선택된 엣지",visible_nodes_one:"1개의 선택된 가시 노드",empty_edges:"엣지에 속성이 없습니다",nodes_zero:"선택된 노드 없음",unselect_all_hidden_edges:"전체 숨김 엣지 선택 해제"},zde={not_found:{paragraph:"주소를 잘못 입력했거나 페이지가 이동했을 수 있습니다.",subtitle:"찾는 페이지가 존재하지 않습니다.",title:"페이지 없음"},unknown:"알 수 없는 오류가 발생했습니다.",title:"오류"},Hde={title:"레이아웃",exec:{success:'"{{layout}}" 레이아웃이 성공적으로 적용되었습니다.',stopped:"{{layout}} 레이아웃이 중단되었습니다",started:"{{layout}} 레이아웃이 실행 중입니다"},random:{title:"무작위",parameters:{scale:{title:"크기 조절",description:"레이아웃 크기 조절"},center:{title:"중심",description:"레이아웃 중심"}},description:"각 좌표를 구간 [0, 1)에서 무작위로 균일하게 선택하여 모든 노드를 배치하는 무작위 레이아웃"},placeholder:"레이아웃 알고리즘을 선택",description:"이 패널에서 그래프 노드에 대한 새 좌표를 계산할 수 있습니다. ",circular:{title:"원형",description:"원 안에 노드를 배치",parameters:{center:{title:"중심",description:"레이아웃의 중심"},scale:{title:"크기 조절",description:"레이아웃의 크기 조절"}}},force:{title:"힘 방향",parameters:{inertia:{title:"관성",description:"각 단계에서 보존되는 노드 벡터 변위의 백분율입니다. 0은 관성이 없음을 의미하고, 1은 마찰이 없음을 의미"},attraction:{title:"견인력",description:"탄성체와 같이 연결된 각 노드 쌍을 끌어당기는 견인력의 중요성"},repulsion:{description:"자석처럼 각 노드 쌍을 끌어당기는 반발력의 중요성",title:"반발력"},gravity:{title:"중력",description:"모든 노드를 중심으로 끌어들이는 중력의 중요성"},maxMove:{title:"최대 이동",description:"각 단계에서 노드가 움직일 수 있는 최대 길이(픽셀)"}}},circlePack:{parameters:{groupingField:{description:"노드를 그룹화하는 데 사용할 선택적 속성",title:"계층 속성"},scale:{description:"레이아웃 크기 조절",title:"크기 조절"},center:{title:"중심",description:"레이아웃 중심"}},title:"CirclePack(원형 배치)",description:"지정된 속성에 따라 노드를 버블 차트로 배열합니다"},script:{title:"커스텀 레이아웃",description:"각 노드에 대해 {x,y}개의 개체를 반환하는 함수를 생성하여 자신의 레이아웃 작성"},fa2:{parameters:{linLogMode:{title:"LinLog(선형 및 로그) 모드",description:"Noack의 LinLog 모델을 사용할지 여부."},gravity:{description:"레이아웃의 중력 강도",title:"중력"},slowDown:{title:"감속?"},barnesHutTheta:{title:"Barnes-Hut 세타",description:"Barnes-Hut 근사 세타 파라미터"},outboundAttractionDistribution:{title:"외부향 인력 분포"},barnesHutOptimize:{description:"기본 O(n^2)가 아닌 O(n*log(n))에서 반발력을 계산하기 위해 Barnes-Hut 근사를 사용할지 여부(n은 노드 수)",title:"Barnes-Hut 최적화"},adjustSizes:{description:"노드의 크기를 고려해야 할까요?",title:"크기를 조정?"},strongGravityMode:{title:"강한 중력 모드?"},edgeWeightInfluence:{title:"엣지 가중치 영향도",description:"레이아웃에 대한 엣지의 가중치 영향도"},scalingRatio:{title:"크기 조절 비율"}},title:"ForceAtlas2",buttons:{autoSettings:{title:"추측 설정",description:"현재 그래프에 가장 적합한 설정을 생성합니다"}}},noverlap:{parameters:{speed:{title:"속도",description:"전체 프로세스를 용이하게 하기 위해 노드 이동 속도를 늦추는 감쇠 계수"},expansion:{description:"노드가 외부로 이동을 시도할 수 있는 현재 공간의 백분율",title:"확장"},gridSize:{description:"그래프의 공간을 수평과 수직으로 세분화하는 그리드 셀의 수. 이를 최적화 방법으로 사용합니다. 1로 설정하면 O(n²) 시간 복잡도를 가질 수 있으며, 때로는 매우 적은 노드로 더 나은 성능을 발휘할 수 있습니다.",title:"그리드 크기"},margin:{description:"노드 사이를 유지할 여백",title:"여백"},ratio:{title:"비율",description:"비율 조정 노드 크기"}},title:"겹침 없음",description:"충돌 방지 레이아웃 알고리즘"}},Vde={title:"데이터 개요"},qde={github:"GitHub"},Yde={select_ui_language:"어플리케이션 언어 선택",title:"GitHub 인증",logged_as:"현재 {{username}}으로 GitHub에 로그인되어 있습니다.",description:"Gephi Lite에서 GitHub에 로그인하여 GitHub Gists로 직접 그래프 파일을 저장하고 로드할 수 있습니다."},jde={cannot_restore:"그래프를 복원할 수 없습니다.",restore_successful:"작업 그래프가 복원되었습니다."},Wde={avatar_alt:"{{name}}의 아바타"},Kde={nodes:{help:"노드를 검색할 항목을 입력",other_result:"... 그리고 {{count}} 개의 다른 노드",placeholder:"노드 검색 ...",no_result:"노드가 없습니다"},edges:{help:"엣지를 검색할 항목을 입력",placeholder:"엣지 검색...",no_result:"엣지가 없습니다",other_result:"... 그리고 {{count}} 개의 다른 엣지"},graph:{no_result:"결과 없음",select_all_nodes:"선택 항목에 {{count}} 개 노드를 추가",help:"검색할 항목을 입력",other_result:"... 그리고 {{count}} 개의 다른 결과",select_all_edges:"선택 항목에 {{count}} 개 엣지를 추가",placeholder:"노드, 엣지 검색..."}},Qde={hide:"숨기기",start:"시작",edit:"편집",show_more:"더 보이기",updated:"업데이트됨",save:"저장",collapse:"붕괴",add:"추가",created:"생성됨",all:"전체","load-more":"더 로드하기","save-and-run":"저장 및 실행",max:"최대",open_code_editor:"코드 편집기 열기",clear:"지우기",stop:"정지",delete:"삭제",cancel:"취소",show:"보이기",copy:"복사",confirm:"확인",select:"선택...",reset:"재설정",open:"열기",open_file:"{{filename}} 파일 열기",show_less:"덜 보이기",none:"없음",filename:"파일 이름",expand:"확장",apply:"적용",submit:"제출",loading:"로드 중",min:"최소",remove:"제거",size:"크기",close:"닫기"},Xde={github:{auth:{copy_success:"코드가 클립보드에 저장됨",asking_for_device_code:"GitHub에 장치 코드를 요청 중",title:"GitHub 인증",waiting_validation:"검증 대기 중",copy_code:'아래 코드를 복사하고 "GitHub 열기" 버튼을 클릭하세요. GitHub가 코드를 묻는 새 탭이 열립니다'},title:"GitHub"}},Zde={title:"데이터 관리",login_capabilities:"GitHub Gists로 직접 그래프 파일을 저장하고 로드하기 위해, Gephi Lite에서 GitHub에 로그인 가능합니다:"},Jde={graph:Mde,edition:Lde,welcome:kde,statistics:Pde,menu:Fde,appearance:Ude,filters:Bde,auth:Gde,selection:$de,error:zde,layouts:Hde,context:Vde,providers:qde,github:Yde,storage:jde,"gephi-lite":{title:"Gephi Lite",info:"Gephi Lite에 대한 추가 정보"},user:Wde,search:Kde,common:Qde,cloud:Xde,file:Zde};var efe={VITE_GITHUB_PROXY:"https://githubapi.gephi.org",BASE_URL:"/gephi-lite/",MODE:"production",DEV:!1,PROD:!0,SSR:!1};const FO={dev:{translation:Sue,label:"Dev language"},en:{translation:Hue,label:"English"},fr:{translation:dde,label:"Français"},hu:{translation:Ide,label:"Magyar"},ko:{translation:Jde,label:"한국인"}},iF=efe.NODE_ENV!=="production"?"dev":"en",Yb=Yr.use(Jne).use(IH);Yb.init({debug:!1,fallbackLng:iF,resources:FO,detection:{order:["querystring","navigator"],lookupQuerystring:"lang",convertDetectedLanguage:e=>e in FO?e:iF}}).then(()=>{var e,t;(e=Yr.services.formatter)==null||e.add("lowercase",(n,r,i)=>n.toLowerCase()),(t=Yr.services.formatter)==null||t.add("capitalize",(n,r,i)=>Se.capitalize(n))});const tfe=({children:e})=>{const{locale:t}=Hc();return x.useEffect(()=>{t&&Yb.changeLanguage(t)},[t]),h.jsx(rre,{i18n:Yb,children:e})};function aF(){return{recentRemoteFiles:[],layoutsParameters:{},metrics:{},locale:Yb.language,theme:"auto"}}function MH(){try{const e=localStorage.getItem("preferences"),t=e?rfe(e):null;return{...aF(),...t}}catch{return aF()}}function nfe(e){return Yu(e)}function rfe(e){try{return Fp(e)}catch{return null}}function fy(e){return e==="auto"?window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light":e}const ife=e=>t=>({...t,recentRemoteFiles:[e,...t.recentRemoteFiles.filter(n=>!Se.isEqual(n,e))].slice(0,5)}),afe=e=>t=>({...t,locale:e}),ofe=e=>t=>({...t,theme:e}),up=mi(MH()),LH={addRemoteFile:vt(ife,up),changeLocale:vt(afe,up),changeTheme:vt(ofe,up)};up.bind((e,t)=>{localStorage.setItem("preferences",nfe(e)),(t.theme!==e.theme||!document.documentElement.getAttribute("data-bs-theme"))&&document.documentElement.setAttribute("data-bs-theme",fy(e.theme))});function vi(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function sfe(e,t){if(typeof e!="object"||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||"default");if(typeof r!="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}function kH(e){var t=sfe(e,"string");return typeof t=="symbol"?t:String(t)}function oF(e,t){for(var n=0;ne.length)&&(t=e.length);for(var n=0,r=new Array(t);n0&&(this.stack[this.stack.length-1].containsTag=!0),this.stack.push({name:r,tags:this.tags}),this.started_write&&this.indenter(),this.write("<",r),this.startAttributes(),this.started_write=!0,this},startElementNS:function(r,i,a){if(r=t(r),i=t(i),!r.match(this.name_regex)||!i.match(this.name_regex))throw Error("Invalid Parameter");return this.attributes&&this.endAttributes(),++this.tags,this.texts=0,this.stack.length>0&&(this.stack[this.stack.length-1].containsTag=!0),this.stack.push({name:r+":"+i,tags:this.tags}),this.started_write&&this.indenter(),this.write("<",r+":"+i),this.startAttributes(),this.started_write=!0,this},endElement:function(){if(!this.tags)return this;var r=this.stack.pop();return this.attributes>0?(this.attribute&&(this.texts&&this.endAttribute(),this.endAttribute()),this.write("/"),this.endAttributes()):(r.containsTag&&this.indenter(),this.write("")),--this.tags,this.texts=0,this},writeAttribute:function(r,i){return typeof i=="function"&&(i=i()),e(i)?this:this.startAttribute(r).text(i).endAttribute()},writeAttributeNS:function(r,i,a,o){return o||(o=a),typeof o=="function"&&(o=o()),e(o)?this:this.startAttributeNS(r,i,a).text(o).endAttribute()},startAttributes:function(){return this.attributes=1,this},endAttributes:function(){return this.attributes?(this.attribute&&this.endAttribute(),this.attributes=0,this.attribute=0,this.texts=0,this.write(">"),this):this},startAttribute:function(r){if(r=t(r),!r.match(this.name_regex))throw Error("Invalid Parameter");return!this.attributes&&!this.pi?this:this.attribute?this:(this.attribute=1,this.write(" ",r,'="'),this)},startAttributeNS:function(r,i,a){if(r=t(r),i=t(i),!r.match(this.name_regex)||!i.match(this.name_regex))throw Error("Invalid Parameter");return!this.attributes&&!this.pi?this:this.attribute?this:(this.attribute=1,this.write(" ",r+":"+i,'="'),this)},endAttribute:function(){return this.attribute?(this.attribute=0,this.texts=0,this.write('"'),this):this},text:function(r){return r=t(r),!this.tags&&!this.comment&&!this.pi&&!this.cdata?this:this.attributes&&this.attribute?(++this.texts,this.write(r.replace(/&/g,"&").replace(//g,">")),++this.texts,this.started_write=!0,this)},writeComment:function(r){return this.startComment().text(r).endComment()},startComment:function(){return this.comment?this:(this.attributes&&this.endAttributes(),this.indenter(),this.write(""),this.comment=0,this):this},writeDocType:function(r,i,a,o){return this.startDocType(r,i,a,o).endDocType()},startDocType:function(r,i,a,o){if(this.dtd||this.tags)return this;if(r=t(r),i=i&&t(i),a=a&&t(a),o=o&&t(o),!r.match(this.name_regex)||i&&!i.match(/^[\w\-][\w\s\-\/\+\:\.]*/)||a&&!a.match(/^[\w\.][\w\-\/\\\:\.]*/)||o&&!o.match(/[\w\s\<\>\+\.\!\#\-\?\*\,\(\)\|]*/))throw Error("Invalid Parameter");return i=i?' PUBLIC "'+i+'"':a?" SYSTEM":"",a=a?' "'+a+'"':"",o=o?" ["+o+"]":"",this.started_write&&this.indenter(),this.write(""),this):this},writePI:function(r,i){return this.startPI(r).text(i).endPI()},startPI:function(r){if(r=t(r),!r.match(this.name_regex))throw Error("Invalid Parameter");return this.pi?this:(this.attributes&&this.endAttributes(),this.started_write&&this.indenter(),this.write(""),this.pi=0,this):this},writeCData:function(r){return this.startCData().text(r).endCData()},startCData:function(){return this.cdata?this:(this.attributes&&this.endAttributes(),this.indenter(),this.write(""),this.cdata=0,this):this},writeRaw:function(r){return r=t(r),!this.tags&&!this.comment&&!this.pi&&!this.cdata?this:this.attributes&&this.attribute?(++this.texts,this.write(r.replace("&","&").replace('"',""")),this):(this.attributes&&!this.attribute&&this.endAttributes(),++this.texts,this.write(r),this.started_write=!0,this)}},FC=n,FC}var UC,$P;function Qle(){return $P||($P=1,UC=Kle()),UC}var BC,zP;function Xle(){if(zP)return BC;zP=1;var e=pn,t=uy,n=Qle(),r=zp.sanitizeTagName,i=new Set(["color","size","x","y","z","shape","thickness"]),a=/^\s*rgba?\s*\(/i,o=/^\s*rgba?\s*\(\s*([0-9]*)\s*,\s*([0-9]*)\s*,\s*([0-9]*)\s*(?:,\s*([.0-9]*))?\)\s*$/;function s(U){if(!U||typeof U!="string")return{};if(U[0]==="#")return U=U.slice(1),U.length===3?{r:parseInt(U[0]+U[0],16),g:parseInt(U[1]+U[1],16),b:parseInt(U[2]+U[2],16)}:{r:parseInt(U[0]+U[1],16),g:parseInt(U[2]+U[3],16),b:parseInt(U[4]+U[5],16)};if(a.test(U)){var K={};return U=U.match(o),K.r=+U[1],K.g=+U[2],K.b=+U[3],U[4]&&(K.a=+U[4]),K}return{}}function l(U,K,J){var te={},$;for($ in J)$==="label"?te.label=J.label:U==="edge"&&$==="weight"?te.weight=J.weight:U==="edge"&&$==="kind"?te.kind=J.kind:i.has($)?(te.viz=te.viz||{},te.viz[$]=J[$]):(te.attributes=te.attributes||{},te.attributes[$]=J[$]);return te}var c=l.bind(null,"node"),u=l.bind(null,"edge");function f(U){return U<=2147483647&&U>=-2147483647}function p(U){return typeof U>"u"||U===null||U===""||U!==U}var m={liststring:0,listdouble:1,listlong:2,listinteger:3,listboolean:4,string:5,double:6,long:7,integer:8,boolean:9,empty:10};function v(U){return p(U)?"empty":typeof U=="boolean"?"boolean":typeof U=="object"?"string":typeof U=="number"?U===(U|0)?f(U)?"integer":"long":"double":"string"}function _(U){for(var K="empty",J=m[K],te,$,q,M=0,ie=U.length;M","application/xml");rD.parse=Zle(RH.DOMParser,Jle.constructor);rD.write=Xle();var NH=rD;const ece=Rn(NH);function tce(){return{type:"idle"}}const QE=mi(tce()),nce=async e=>{QE.set({type:"loading"});try{const t=Wt.get(),n=ay.get();let r=vl(t,n);const i=nD.get();X8(r,t,i),t.metadata.type==="undirected"&&(r=lae(r));const a=NH.write(r,{});await e(a),QE.set({type:"idle"})}catch{QE.set({type:"error"})}},rce={exportAsGexf:nce};var AH={},wH={};function GC(e){return("0"+(e|0).toString(16)).slice(-2)}function ice(e,t,n){return"#"+GC(e)+GC(t)+GC(n)}function ace(e){var t={};for(var n in e)n==="r"||n==="g"||n==="b"||(t[n]=e[n]);return t}function oce(e){var t;return typeof e.r=="number"&&typeof e.g=="number"&&typeof e.b=="number"?(t=ace(e),t.color=ice(e.r,e.g,e.b),t):e}wH.DEFAULT_FORMATTER=oce;var sce=yH,lce=Cl.mergeEdge,cce=Jie,HP=tae,uce=wH,VP=uce.DEFAULT_FORMATTER;function uE(e){return+e}function dce(e){return e}var fce={boolean:function(e){return e.toLowerCase()==="true"},int:uE,long:uE,float:uE,double:uE,string:dce};function pce(e){for(var t=e.childNodes,n=[],r,i=0,a=t.length;i"u"?c[s]=i.textContent:c[l.name]=l.cast(i.textContent);for(s in t)s in c||(c[s]=t[s]);return c}var mce=function(t,n){return function(i,a,o){o=o||{};var s=o.addMissingNodes===!0,l,c=a;if(!sce(i))throw new Error("graphology-graphml/parser: invalid Graph constructor.");if(typeof a=="string"&&(c=new t().parseFromString(a,"application/xml")),!(c instanceof n))throw new Error("graphology-gexf/parser: source should either be a XML document or a string.");var u=c.getElementsByTagName("graph")[0],f=pce(u),p=c.getElementsByTagName("key"),m=c.getElementsByTagName("node"),v=c.getElementsByTagName("edge"),_=u.getAttribute("edgedefault")||"undirected",E=gce(p),S=new i({type:_}),b=u.getAttribute("id");b&&S.setAttribute("id",b);var T=c.createElement("graph");f.forEach(function(J){T.appendChild(J)});var C=$C(E.models.graph,E.defaults.graph,T);S.mergeAttributes(C);var R,O,N,L,I;for(R=0,O=m.length;R1&&arguments[1]!==void 0?arguments[1]:{};this.init(t,n)}init(t){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};this.prefix=n.prefix||"i18next:",this.logger=t||vce,this.options=n,this.debug=n.debug}log(){for(var t=arguments.length,n=new Array(t),r=0;r{this.observers[r]||(this.observers[r]=new Map);const i=this.observers[r].get(n)||0;this.observers[r].set(n,i+1)}),this}off(t,n){if(this.observers[t]){if(!n){delete this.observers[t];return}this.observers[t].delete(n)}}emit(t){for(var n=arguments.length,r=new Array(n>1?n-1:0),i=1;i{let[s,l]=o;for(let c=0;c{let[s,l]=o;for(let c=0;c{e=r,t=i});return n.resolve=e,n.reject=t,n}function qP(e){return e==null?"":""+e}function Ece(e,t,n){e.forEach(r=>{t[r]&&(n[r]=t[r])})}const bce=/###/g;function ih(e,t,n){function r(s){return s&&s.indexOf("###")>-1?s.replace(bce,"."):s}function i(){return!e||typeof e=="string"}const a=typeof t!="string"?t:t.split(".");let o=0;for(;o":">",'"':""","'":"'","/":"/"};function Cce(e){return typeof e=="string"?e.replace(/[&<>"'\/]/g,t=>Tce[t]):e}class Rce{constructor(t){this.capacity=t,this.regExpMap=new Map,this.regExpQueue=[]}getRegExp(t){const n=this.regExpMap.get(t);if(n!==void 0)return n;const r=new RegExp(t);return this.regExpQueue.length===this.capacity&&this.regExpMap.delete(this.regExpQueue.shift()),this.regExpMap.set(t,r),this.regExpQueue.push(t),r}}const Nce=[" ",",","?","!",";"],Ace=new Rce(20);function wce(e,t,n){t=t||"",n=n||"";const r=Nce.filter(o=>t.indexOf(o)<0&&n.indexOf(o)<0);if(r.length===0)return!0;const i=Ace.getRegExp(`(${r.map(o=>o==="?"?"\\?":o).join("|")})`);let a=!i.test(e);if(!a){const o=e.indexOf(n);o>0&&!i.test(e.substring(0,o))&&(a=!0)}return a}function kO(e,t){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:".";if(!e)return;if(e[t])return e[t];const r=t.split(n);let i=e;for(let a=0;a-1&&l0?e.replace("_","-"):e}class jP extends dy{constructor(t){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{ns:["translation"],defaultNS:"translation"};super(),this.data=t||{},this.options=n,this.options.keySeparator===void 0&&(this.options.keySeparator="."),this.options.ignoreJSONStructure===void 0&&(this.options.ignoreJSONStructure=!0)}addNamespaces(t){this.options.ns.indexOf(t)<0&&this.options.ns.push(t)}removeNamespaces(t){const n=this.options.ns.indexOf(t);n>-1&&this.options.ns.splice(n,1)}getResource(t,n,r){let i=arguments.length>3&&arguments[3]!==void 0?arguments[3]:{};const a=i.keySeparator!==void 0?i.keySeparator:this.options.keySeparator,o=i.ignoreJSONStructure!==void 0?i.ignoreJSONStructure:this.options.ignoreJSONStructure;let s;t.indexOf(".")>-1?s=t.split("."):(s=[t,n],r&&(Array.isArray(r)?s.push(...r):typeof r=="string"&&a?s.push(...r.split(a)):s.push(r)));const l=Hb(this.data,s);return!l&&!n&&!r&&t.indexOf(".")>-1&&(t=s[0],n=s[1],r=s.slice(2).join(".")),l||!o||typeof r!="string"?l:kO(this.data&&this.data[t]&&this.data[t][n],r,a)}addResource(t,n,r,i){let a=arguments.length>4&&arguments[4]!==void 0?arguments[4]:{silent:!1};const o=a.keySeparator!==void 0?a.keySeparator:this.options.keySeparator;let s=[t,n];r&&(s=s.concat(o?r.split(o):r)),t.indexOf(".")>-1&&(s=t.split("."),i=n,n=s[1]),this.addNamespaces(n),YP(this.data,s,i),a.silent||this.emit("added",t,n,r,i)}addResources(t,n,r){let i=arguments.length>3&&arguments[3]!==void 0?arguments[3]:{silent:!1};for(const a in r)(typeof r[a]=="string"||Array.isArray(r[a]))&&this.addResource(t,n,a,r[a],{silent:!0});i.silent||this.emit("added",t,n,r)}addResourceBundle(t,n,r,i,a){let o=arguments.length>5&&arguments[5]!==void 0?arguments[5]:{silent:!1,skipCopy:!1},s=[t,n];t.indexOf(".")>-1&&(s=t.split("."),i=r,r=n,n=s[1]),this.addNamespaces(n);let l=Hb(this.data,s)||{};o.skipCopy||(r=JSON.parse(JSON.stringify(r))),i?OH(l,r,a):l={...l,...r},YP(this.data,s,l),o.silent||this.emit("added",t,n,r)}removeResourceBundle(t,n){this.hasResourceBundle(t,n)&&delete this.data[t][n],this.removeNamespaces(n),this.emit("removed",t,n)}hasResourceBundle(t,n){return this.getResource(t,n)!==void 0}getResourceBundle(t,n){return n||(n=this.options.defaultNS),this.options.compatibilityAPI==="v1"?{...this.getResource(t,n)}:this.getResource(t,n)}getDataByLanguage(t){return this.data[t]}hasLanguageSomeTranslations(t){const n=this.getDataByLanguage(t);return!!(n&&Object.keys(n)||[]).find(i=>n[i]&&Object.keys(n[i]).length>0)}toJSON(){return this.data}}var xH={processors:{},addPostProcessor(e){this.processors[e.name]=e},handle(e,t,n,r,i){return e.forEach(a=>{this.processors[a]&&(t=this.processors[a].process(t,n,r,i))}),t}};const WP={};class qb extends dy{constructor(t){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};super(),Ece(["resourceStore","languageUtils","pluralResolver","interpolator","backendConnector","i18nFormat","utils"],t,this),this.options=n,this.options.keySeparator===void 0&&(this.options.keySeparator="."),this.logger=ms.create("translator")}changeLanguage(t){t&&(this.language=t)}exists(t){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{interpolation:{}};if(t==null)return!1;const r=this.resolve(t,n);return r&&r.res!==void 0}extractFromKey(t,n){let r=n.nsSeparator!==void 0?n.nsSeparator:this.options.nsSeparator;r===void 0&&(r=":");const i=n.keySeparator!==void 0?n.keySeparator:this.options.keySeparator;let a=n.ns||this.options.defaultNS||[];const o=r&&t.indexOf(r)>-1,s=!this.options.userDefinedKeySeparator&&!n.keySeparator&&!this.options.userDefinedNsSeparator&&!n.nsSeparator&&!wce(t,r,i);if(o&&!s){const l=t.match(this.interpolator.nestingRegexp);if(l&&l.length>0)return{key:t,namespaces:a};const c=t.split(r);(r!==i||r===i&&this.options.ns.indexOf(c[0])>-1)&&(a=c.shift()),t=c.join(i)}return typeof a=="string"&&(a=[a]),{key:t,namespaces:a}}translate(t,n,r){if(typeof n!="object"&&this.options.overloadTranslationOptionHandler&&(n=this.options.overloadTranslationOptionHandler(arguments)),typeof n=="object"&&(n={...n}),n||(n={}),t==null)return"";Array.isArray(t)||(t=[String(t)]);const i=n.returnDetails!==void 0?n.returnDetails:this.options.returnDetails,a=n.keySeparator!==void 0?n.keySeparator:this.options.keySeparator,{key:o,namespaces:s}=this.extractFromKey(t[t.length-1],n),l=s[s.length-1],c=n.lng||this.language,u=n.appendNamespaceToCIMode||this.options.appendNamespaceToCIMode;if(c&&c.toLowerCase()==="cimode"){if(u){const C=n.nsSeparator||this.options.nsSeparator;return i?{res:`${l}${C}${o}`,usedKey:o,exactUsedKey:o,usedLng:c,usedNS:l,usedParams:this.getUsedParamsDetails(n)}:`${l}${C}${o}`}return i?{res:o,usedKey:o,exactUsedKey:o,usedLng:c,usedNS:l,usedParams:this.getUsedParamsDetails(n)}:o}const f=this.resolve(t,n);let p=f&&f.res;const m=f&&f.usedKey||o,v=f&&f.exactUsedKey||o,_=Object.prototype.toString.apply(p),E=["[object Number]","[object Function]","[object RegExp]"],S=n.joinArrays!==void 0?n.joinArrays:this.options.joinArrays,b=!this.i18nFormat||this.i18nFormat.handleAsObject;if(b&&p&&(typeof p!="string"&&typeof p!="boolean"&&typeof p!="number")&&E.indexOf(_)<0&&!(typeof S=="string"&&Array.isArray(p))){if(!n.returnObjects&&!this.options.returnObjects){this.options.returnedObjectHandler||this.logger.warn("accessing an object - but returnObjects options is not enabled!");const C=this.options.returnedObjectHandler?this.options.returnedObjectHandler(m,p,{...n,ns:s}):`key '${o} (${this.language})' returned an object instead of string.`;return i?(f.res=C,f.usedParams=this.getUsedParamsDetails(n),f):C}if(a){const C=Array.isArray(p),R=C?[]:{},O=C?v:m;for(const N in p)if(Object.prototype.hasOwnProperty.call(p,N)){const L=`${O}${a}${N}`;R[N]=this.translate(L,{...n,joinArrays:!1,ns:s}),R[N]===L&&(R[N]=p[N])}p=R}}else if(b&&typeof S=="string"&&Array.isArray(p))p=p.join(S),p&&(p=this.extendTranslation(p,t,n,r));else{let C=!1,R=!1;const O=n.count!==void 0&&typeof n.count!="string",N=qb.hasDefaultValue(n),L=O?this.pluralResolver.getSuffix(c,n.count,n):"",I=n.ordinal&&O?this.pluralResolver.getSuffix(c,n.count,{ordinal:!1}):"",F=O&&!n.ordinal&&n.count===0&&this.pluralResolver.shouldUseIntlApi(),ee=F&&n[`defaultValue${this.options.pluralSeparator}zero`]||n[`defaultValue${L}`]||n[`defaultValue${I}`]||n.defaultValue;!this.isValidLookup(p)&&N&&(C=!0,p=ee),this.isValidLookup(p)||(R=!0,p=o);const K=(n.missingKeyNoValueFallbackToKey||this.options.missingKeyNoValueFallbackToKey)&&R?void 0:p,J=N&&ee!==p&&this.options.updateMissing;if(R||C||J){if(this.logger.log(J?"updateKey":"missingKey",c,l,o,J?ee:p),a){const M=this.resolve(o,{...n,keySeparator:!1});M&&M.res&&this.logger.warn("Seems the loaded translations were in flat JSON format instead of nested. Either set keySeparator: false on init or make sure your translations are published in nested format.")}let te=[];const $=this.languageUtils.getFallbackCodes(this.options.fallbackLng,n.lng||this.language);if(this.options.saveMissingTo==="fallback"&&$&&$[0])for(let M=0;M<$.length;M++)te.push($[M]);else this.options.saveMissingTo==="all"?te=this.languageUtils.toResolveHierarchy(n.lng||this.language):te.push(n.lng||this.language);const q=(M,ie,se)=>{const ne=N&&se!==p?se:K;this.options.missingKeyHandler?this.options.missingKeyHandler(M,l,ie,ne,J,n):this.backendConnector&&this.backendConnector.saveMissing&&this.backendConnector.saveMissing(M,l,ie,ne,J,n),this.emit("missingKey",M,l,ie,p)};this.options.saveMissing&&(this.options.saveMissingPlurals&&O?te.forEach(M=>{const ie=this.pluralResolver.getSuffixes(M,n);F&&n[`defaultValue${this.options.pluralSeparator}zero`]&&ie.indexOf(`${this.options.pluralSeparator}zero`)<0&&ie.push(`${this.options.pluralSeparator}zero`),ie.forEach(se=>{q([M],o+se,n[`defaultValue${se}`]||ee)})}):q(te,o,ee))}p=this.extendTranslation(p,t,n,f,r),R&&p===o&&this.options.appendNamespaceToMissingKey&&(p=`${l}:${o}`),(R||C)&&this.options.parseMissingKeyHandler&&(this.options.compatibilityAPI!=="v1"?p=this.options.parseMissingKeyHandler(this.options.appendNamespaceToMissingKey?`${l}:${o}`:o,C?p:void 0):p=this.options.parseMissingKeyHandler(p))}return i?(f.res=p,f.usedParams=this.getUsedParamsDetails(n),f):p}extendTranslation(t,n,r,i,a){var o=this;if(this.i18nFormat&&this.i18nFormat.parse)t=this.i18nFormat.parse(t,{...this.options.interpolation.defaultVariables,...r},r.lng||this.language||i.usedLng,i.usedNS,i.usedKey,{resolved:i});else if(!r.skipInterpolation){r.interpolation&&this.interpolator.init({...r,interpolation:{...this.options.interpolation,...r.interpolation}});const c=typeof t=="string"&&(r&&r.interpolation&&r.interpolation.skipOnVariables!==void 0?r.interpolation.skipOnVariables:this.options.interpolation.skipOnVariables);let u;if(c){const p=t.match(this.interpolator.nestingRegexp);u=p&&p.length}let f=r.replace&&typeof r.replace!="string"?r.replace:r;if(this.options.interpolation.defaultVariables&&(f={...this.options.interpolation.defaultVariables,...f}),t=this.interpolator.interpolate(t,f,r.lng||this.language,r),c){const p=t.match(this.interpolator.nestingRegexp),m=p&&p.length;u1&&arguments[1]!==void 0?arguments[1]:{},r,i,a,o,s;return typeof t=="string"&&(t=[t]),t.forEach(l=>{if(this.isValidLookup(r))return;const c=this.extractFromKey(l,n),u=c.key;i=u;let f=c.namespaces;this.options.fallbackNS&&(f=f.concat(this.options.fallbackNS));const p=n.count!==void 0&&typeof n.count!="string",m=p&&!n.ordinal&&n.count===0&&this.pluralResolver.shouldUseIntlApi(),v=n.context!==void 0&&(typeof n.context=="string"||typeof n.context=="number")&&n.context!=="",_=n.lngs?n.lngs:this.languageUtils.toResolveHierarchy(n.lng||this.language,n.fallbackLng);f.forEach(E=>{this.isValidLookup(r)||(s=E,!WP[`${_[0]}-${E}`]&&this.utils&&this.utils.hasLoadedNamespace&&!this.utils.hasLoadedNamespace(s)&&(WP[`${_[0]}-${E}`]=!0,this.logger.warn(`key "${i}" for languages "${_.join(", ")}" won't get resolved as namespace "${s}" was not yet loaded`,"This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!")),_.forEach(S=>{if(this.isValidLookup(r))return;o=S;const b=[u];if(this.i18nFormat&&this.i18nFormat.addLookupKeys)this.i18nFormat.addLookupKeys(b,u,S,E,n);else{let C;p&&(C=this.pluralResolver.getSuffix(S,n.count,n));const R=`${this.options.pluralSeparator}zero`,O=`${this.options.pluralSeparator}ordinal${this.options.pluralSeparator}`;if(p&&(b.push(u+C),n.ordinal&&C.indexOf(O)===0&&b.push(u+C.replace(O,this.options.pluralSeparator)),m&&b.push(u+R)),v){const N=`${u}${this.options.contextSeparator}${n.context}`;b.push(N),p&&(b.push(N+C),n.ordinal&&C.indexOf(O)===0&&b.push(N+C.replace(O,this.options.pluralSeparator)),m&&b.push(N+R))}}let T;for(;T=b.pop();)this.isValidLookup(r)||(a=T,r=this.getResource(S,E,T,n))}))})}),{res:r,usedKey:i,exactUsedKey:a,usedLng:o,usedNS:s}}isValidLookup(t){return t!==void 0&&!(!this.options.returnNull&&t===null)&&!(!this.options.returnEmptyString&&t==="")}getResource(t,n,r){let i=arguments.length>3&&arguments[3]!==void 0?arguments[3]:{};return this.i18nFormat&&this.i18nFormat.getResource?this.i18nFormat.getResource(t,n,r,i):this.resourceStore.getResource(t,n,r,i)}getUsedParamsDetails(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};const n=["defaultValue","ordinal","context","replace","lng","lngs","fallbackLng","ns","keySeparator","nsSeparator","returnObjects","returnDetails","joinArrays","postProcess","interpolation"],r=t.replace&&typeof t.replace!="string";let i=r?t.replace:t;if(r&&typeof t.count<"u"&&(i.count=t.count),this.options.interpolation.defaultVariables&&(i={...this.options.interpolation.defaultVariables,...i}),!r){i={...i};for(const a of n)delete i[a]}return i}static hasDefaultValue(t){const n="defaultValue";for(const r in t)if(Object.prototype.hasOwnProperty.call(t,r)&&n===r.substring(0,n.length)&&t[r]!==void 0)return!0;return!1}}function zC(e){return e.charAt(0).toUpperCase()+e.slice(1)}class KP{constructor(t){this.options=t,this.supportedLngs=this.options.supportedLngs||!1,this.logger=ms.create("languageUtils")}getScriptPartFromCode(t){if(t=Vb(t),!t||t.indexOf("-")<0)return null;const n=t.split("-");return n.length===2||(n.pop(),n[n.length-1].toLowerCase()==="x")?null:this.formatLanguageCode(n.join("-"))}getLanguagePartFromCode(t){if(t=Vb(t),!t||t.indexOf("-")<0)return t;const n=t.split("-");return this.formatLanguageCode(n[0])}formatLanguageCode(t){if(typeof t=="string"&&t.indexOf("-")>-1){const n=["hans","hant","latn","cyrl","cans","mong","arab"];let r=t.split("-");return this.options.lowerCaseLng?r=r.map(i=>i.toLowerCase()):r.length===2?(r[0]=r[0].toLowerCase(),r[1]=r[1].toUpperCase(),n.indexOf(r[1].toLowerCase())>-1&&(r[1]=zC(r[1].toLowerCase()))):r.length===3&&(r[0]=r[0].toLowerCase(),r[1].length===2&&(r[1]=r[1].toUpperCase()),r[0]!=="sgn"&&r[2].length===2&&(r[2]=r[2].toUpperCase()),n.indexOf(r[1].toLowerCase())>-1&&(r[1]=zC(r[1].toLowerCase())),n.indexOf(r[2].toLowerCase())>-1&&(r[2]=zC(r[2].toLowerCase()))),r.join("-")}return this.options.cleanCode||this.options.lowerCaseLng?t.toLowerCase():t}isSupportedCode(t){return(this.options.load==="languageOnly"||this.options.nonExplicitSupportedLngs)&&(t=this.getLanguagePartFromCode(t)),!this.supportedLngs||!this.supportedLngs.length||this.supportedLngs.indexOf(t)>-1}getBestMatchFromCodes(t){if(!t)return null;let n;return t.forEach(r=>{if(n)return;const i=this.formatLanguageCode(r);(!this.options.supportedLngs||this.isSupportedCode(i))&&(n=i)}),!n&&this.options.supportedLngs&&t.forEach(r=>{if(n)return;const i=this.getLanguagePartFromCode(r);if(this.isSupportedCode(i))return n=i;n=this.options.supportedLngs.find(a=>{if(a===i)return a;if(!(a.indexOf("-")<0&&i.indexOf("-")<0)&&(a.indexOf("-")>0&&i.indexOf("-")<0&&a.substring(0,a.indexOf("-"))===i||a.indexOf(i)===0&&i.length>1))return a})}),n||(n=this.getFallbackCodes(this.options.fallbackLng)[0]),n}getFallbackCodes(t,n){if(!t)return[];if(typeof t=="function"&&(t=t(n)),typeof t=="string"&&(t=[t]),Array.isArray(t))return t;if(!n)return t.default||[];let r=t[n];return r||(r=t[this.getScriptPartFromCode(n)]),r||(r=t[this.formatLanguageCode(n)]),r||(r=t[this.getLanguagePartFromCode(n)]),r||(r=t.default),r||[]}toResolveHierarchy(t,n){const r=this.getFallbackCodes(n||this.options.fallbackLng||[],t),i=[],a=o=>{o&&(this.isSupportedCode(o)?i.push(o):this.logger.warn(`rejecting language code not found in supportedLngs: ${o}`))};return typeof t=="string"&&(t.indexOf("-")>-1||t.indexOf("_")>-1)?(this.options.load!=="languageOnly"&&a(this.formatLanguageCode(t)),this.options.load!=="languageOnly"&&this.options.load!=="currentOnly"&&a(this.getScriptPartFromCode(t)),this.options.load!=="currentOnly"&&a(this.getLanguagePartFromCode(t))):typeof t=="string"&&a(this.formatLanguageCode(t)),r.forEach(o=>{i.indexOf(o)<0&&a(this.formatLanguageCode(o))}),i}}let Oce=[{lngs:["ach","ak","am","arn","br","fil","gun","ln","mfe","mg","mi","oc","pt","pt-BR","tg","tl","ti","tr","uz","wa"],nr:[1,2],fc:1},{lngs:["af","an","ast","az","bg","bn","ca","da","de","dev","el","en","eo","es","et","eu","fi","fo","fur","fy","gl","gu","ha","hi","hu","hy","ia","it","kk","kn","ku","lb","mai","ml","mn","mr","nah","nap","nb","ne","nl","nn","no","nso","pa","pap","pms","ps","pt-PT","rm","sco","se","si","so","son","sq","sv","sw","ta","te","tk","ur","yo"],nr:[1,2],fc:2},{lngs:["ay","bo","cgg","fa","ht","id","ja","jbo","ka","km","ko","ky","lo","ms","sah","su","th","tt","ug","vi","wo","zh"],nr:[1],fc:3},{lngs:["be","bs","cnr","dz","hr","ru","sr","uk"],nr:[1,2,5],fc:4},{lngs:["ar"],nr:[0,1,2,3,11,100],fc:5},{lngs:["cs","sk"],nr:[1,2,5],fc:6},{lngs:["csb","pl"],nr:[1,2,5],fc:7},{lngs:["cy"],nr:[1,2,3,8],fc:8},{lngs:["fr"],nr:[1,2],fc:9},{lngs:["ga"],nr:[1,2,3,7,11],fc:10},{lngs:["gd"],nr:[1,2,3,20],fc:11},{lngs:["is"],nr:[1,2],fc:12},{lngs:["jv"],nr:[0,1],fc:13},{lngs:["kw"],nr:[1,2,3,4],fc:14},{lngs:["lt"],nr:[1,2,10],fc:15},{lngs:["lv"],nr:[1,2,0],fc:16},{lngs:["mk"],nr:[1,2],fc:17},{lngs:["mnk"],nr:[0,1,2],fc:18},{lngs:["mt"],nr:[1,2,11,20],fc:19},{lngs:["or"],nr:[2,1],fc:2},{lngs:["ro"],nr:[1,2,20],fc:20},{lngs:["sl"],nr:[5,1,2,3],fc:21},{lngs:["he","iw"],nr:[1,2,20,21],fc:22}],xce={1:function(e){return+(e>1)},2:function(e){return+(e!=1)},3:function(e){return 0},4:function(e){return e%10==1&&e%100!=11?0:e%10>=2&&e%10<=4&&(e%100<10||e%100>=20)?1:2},5:function(e){return e==0?0:e==1?1:e==2?2:e%100>=3&&e%100<=10?3:e%100>=11?4:5},6:function(e){return e==1?0:e>=2&&e<=4?1:2},7:function(e){return e==1?0:e%10>=2&&e%10<=4&&(e%100<10||e%100>=20)?1:2},8:function(e){return e==1?0:e==2?1:e!=8&&e!=11?2:3},9:function(e){return+(e>=2)},10:function(e){return e==1?0:e==2?1:e<7?2:e<11?3:4},11:function(e){return e==1||e==11?0:e==2||e==12?1:e>2&&e<20?2:3},12:function(e){return+(e%10!=1||e%100==11)},13:function(e){return+(e!==0)},14:function(e){return e==1?0:e==2?1:e==3?2:3},15:function(e){return e%10==1&&e%100!=11?0:e%10>=2&&(e%100<10||e%100>=20)?1:2},16:function(e){return e%10==1&&e%100!=11?0:e!==0?1:2},17:function(e){return e==1||e%10==1&&e%100!=11?0:1},18:function(e){return e==0?0:e==1?1:2},19:function(e){return e==1?0:e==0||e%100>1&&e%100<11?1:e%100>10&&e%100<20?2:3},20:function(e){return e==1?0:e==0||e%100>0&&e%100<20?1:2},21:function(e){return e%100==1?1:e%100==2?2:e%100==3||e%100==4?3:0},22:function(e){return e==1?0:e==2?1:(e<0||e>10)&&e%10==0?2:3}};const Dce=["v1","v2","v3"],Ice=["v4"],QP={zero:0,one:1,two:2,few:3,many:4,other:5};function Mce(){const e={};return Oce.forEach(t=>{t.lngs.forEach(n=>{e[n]={numbers:t.nr,plurals:xce[t.fc]}})}),e}class Lce{constructor(t){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};this.languageUtils=t,this.options=n,this.logger=ms.create("pluralResolver"),(!this.options.compatibilityJSON||Ice.includes(this.options.compatibilityJSON))&&(typeof Intl>"u"||!Intl.PluralRules)&&(this.options.compatibilityJSON="v3",this.logger.error("Your environment seems not to be Intl API compatible, use an Intl.PluralRules polyfill. Will fallback to the compatibilityJSON v3 format handling.")),this.rules=Mce()}addRule(t,n){this.rules[t]=n}getRule(t){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};if(this.shouldUseIntlApi())try{return new Intl.PluralRules(Vb(t==="dev"?"en":t),{type:n.ordinal?"ordinal":"cardinal"})}catch{return}return this.rules[t]||this.rules[this.languageUtils.getLanguagePartFromCode(t)]}needsPlural(t){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};const r=this.getRule(t,n);return this.shouldUseIntlApi()?r&&r.resolvedOptions().pluralCategories.length>1:r&&r.numbers.length>1}getPluralFormsOfKey(t,n){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};return this.getSuffixes(t,r).map(i=>`${n}${i}`)}getSuffixes(t){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};const r=this.getRule(t,n);return r?this.shouldUseIntlApi()?r.resolvedOptions().pluralCategories.sort((i,a)=>QP[i]-QP[a]).map(i=>`${this.options.prepend}${n.ordinal?`ordinal${this.options.prepend}`:""}${i}`):r.numbers.map(i=>this.getSuffix(t,i,n)):[]}getSuffix(t,n){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};const i=this.getRule(t,r);return i?this.shouldUseIntlApi()?`${this.options.prepend}${r.ordinal?`ordinal${this.options.prepend}`:""}${i.select(n)}`:this.getSuffixRetroCompatible(i,n):(this.logger.warn(`no plural rule found for: ${t}`),"")}getSuffixRetroCompatible(t,n){const r=t.noAbs?t.plurals(n):t.plurals(Math.abs(n));let i=t.numbers[r];this.options.simplifyPluralSuffix&&t.numbers.length===2&&t.numbers[0]===1&&(i===2?i="plural":i===1&&(i=""));const a=()=>this.options.prepend&&i.toString()?this.options.prepend+i.toString():i.toString();return this.options.compatibilityJSON==="v1"?i===1?"":typeof i=="number"?`_plural_${i.toString()}`:a():this.options.compatibilityJSON==="v2"||this.options.simplifyPluralSuffix&&t.numbers.length===2&&t.numbers[0]===1?a():this.options.prepend&&r.toString()?this.options.prepend+r.toString():r.toString()}shouldUseIntlApi(){return!Dce.includes(this.options.compatibilityJSON)}}function XP(e,t,n){let r=arguments.length>3&&arguments[3]!==void 0?arguments[3]:".",i=arguments.length>4&&arguments[4]!==void 0?arguments[4]:!0,a=yce(e,t,n);return!a&&i&&typeof n=="string"&&(a=kO(e,n,r),a===void 0&&(a=kO(t,n,r))),a}class kce{constructor(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};this.logger=ms.create("interpolator"),this.options=t,this.format=t.interpolation&&t.interpolation.format||(n=>n),this.init(t)}init(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};t.interpolation||(t.interpolation={escapeValue:!0});const{escape:n,escapeValue:r,useRawValueToEscape:i,prefix:a,prefixEscaped:o,suffix:s,suffixEscaped:l,formatSeparator:c,unescapeSuffix:u,unescapePrefix:f,nestingPrefix:p,nestingPrefixEscaped:m,nestingSuffix:v,nestingSuffixEscaped:_,nestingOptionsSeparator:E,maxReplaces:S,alwaysFormat:b}=t.interpolation;this.escape=n!==void 0?n:Cce,this.escapeValue=r!==void 0?r:!0,this.useRawValueToEscape=i!==void 0?i:!1,this.prefix=a?uf(a):o||"{{",this.suffix=s?uf(s):l||"}}",this.formatSeparator=c||",",this.unescapePrefix=u?"":f||"-",this.unescapeSuffix=this.unescapePrefix?"":u||"",this.nestingPrefix=p?uf(p):m||uf("$t("),this.nestingSuffix=v?uf(v):_||uf(")"),this.nestingOptionsSeparator=E||",",this.maxReplaces=S||1e3,this.alwaysFormat=b!==void 0?b:!1,this.resetRegExp()}reset(){this.options&&this.init(this.options)}resetRegExp(){const t=(n,r)=>n&&n.source===r?(n.lastIndex=0,n):new RegExp(r,"g");this.regexp=t(this.regexp,`${this.prefix}(.+?)${this.suffix}`),this.regexpUnescape=t(this.regexpUnescape,`${this.prefix}${this.unescapePrefix}(.+?)${this.unescapeSuffix}${this.suffix}`),this.nestingRegexp=t(this.nestingRegexp,`${this.nestingPrefix}(.+?)${this.nestingSuffix}`)}interpolate(t,n,r,i){let a,o,s;const l=this.options&&this.options.interpolation&&this.options.interpolation.defaultVariables||{};function c(v){return v.replace(/\$/g,"$$$$")}const u=v=>{if(v.indexOf(this.formatSeparator)<0){const b=XP(n,l,v,this.options.keySeparator,this.options.ignoreJSONStructure);return this.alwaysFormat?this.format(b,void 0,r,{...i,...n,interpolationkey:v}):b}const _=v.split(this.formatSeparator),E=_.shift().trim(),S=_.join(this.formatSeparator).trim();return this.format(XP(n,l,E,this.options.keySeparator,this.options.ignoreJSONStructure),S,r,{...i,...n,interpolationkey:E})};this.resetRegExp();const f=i&&i.missingInterpolationHandler||this.options.missingInterpolationHandler,p=i&&i.interpolation&&i.interpolation.skipOnVariables!==void 0?i.interpolation.skipOnVariables:this.options.interpolation.skipOnVariables;return[{regex:this.regexpUnescape,safeValue:v=>c(v)},{regex:this.regexp,safeValue:v=>this.escapeValue?c(this.escape(v)):c(v)}].forEach(v=>{for(s=0;a=v.regex.exec(t);){const _=a[1].trim();if(o=u(_),o===void 0)if(typeof f=="function"){const S=f(t,a,i);o=typeof S=="string"?S:""}else if(i&&Object.prototype.hasOwnProperty.call(i,_))o="";else if(p){o=a[0];continue}else this.logger.warn(`missed to pass in variable ${_} for interpolating ${t}`),o="";else typeof o!="string"&&!this.useRawValueToEscape&&(o=qP(o));const E=v.safeValue(o);if(t=t.replace(a[0],E),p?(v.regex.lastIndex+=o.length,v.regex.lastIndex-=a[0].length):v.regex.lastIndex=0,s++,s>=this.maxReplaces)break}}),t}nest(t,n){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},i,a,o;function s(l,c){const u=this.nestingOptionsSeparator;if(l.indexOf(u)<0)return l;const f=l.split(new RegExp(`${u}[ ]*{`));let p=`{${f[1]}`;l=f[0],p=this.interpolate(p,o);const m=p.match(/'/g),v=p.match(/"/g);(m&&m.length%2===0&&!v||v.length%2!==0)&&(p=p.replace(/'/g,'"'));try{o=JSON.parse(p),c&&(o={...c,...o})}catch(_){return this.logger.warn(`failed parsing options string in nesting for key ${l}`,_),`${l}${u}${p}`}return o.defaultValue&&o.defaultValue.indexOf(this.prefix)>-1&&delete o.defaultValue,l}for(;i=this.nestingRegexp.exec(t);){let l=[];o={...r},o=o.replace&&typeof o.replace!="string"?o.replace:o,o.applyPostProcessor=!1,delete o.defaultValue;let c=!1;if(i[0].indexOf(this.formatSeparator)!==-1&&!/{.*}/.test(i[1])){const u=i[1].split(this.formatSeparator).map(f=>f.trim());i[1]=u.shift(),l=u,c=!0}if(a=n(s.call(this,i[1].trim(),o),o),a&&i[0]===t&&typeof a!="string")return a;typeof a!="string"&&(a=qP(a)),a||(this.logger.warn(`missed to resolve ${i[1]} for nesting ${t}`),a=""),c&&(a=l.reduce((u,f)=>this.format(u,f,r.lng,{...r,interpolationkey:i[1].trim()}),a.trim())),t=t.replace(i[0],a),this.regexp.lastIndex=0}return t}}function Pce(e){let t=e.toLowerCase().trim();const n={};if(e.indexOf("(")>-1){const r=e.split("(");t=r[0].toLowerCase().trim();const i=r[1].substring(0,r[1].length-1);t==="currency"&&i.indexOf(":")<0?n.currency||(n.currency=i.trim()):t==="relativetime"&&i.indexOf(":")<0?n.range||(n.range=i.trim()):i.split(";").forEach(o=>{if(o){const[s,...l]=o.split(":"),c=l.join(":").trim().replace(/^'+|'+$/g,""),u=s.trim();n[u]||(n[u]=c),c==="false"&&(n[u]=!1),c==="true"&&(n[u]=!0),isNaN(c)||(n[u]=parseInt(c,10))}})}return{formatName:t,formatOptions:n}}function df(e){const t={};return function(r,i,a){const o=i+JSON.stringify(a);let s=t[o];return s||(s=e(Vb(i),a),t[o]=s),s(r)}}class Fce{constructor(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};this.logger=ms.create("formatter"),this.options=t,this.formats={number:df((n,r)=>{const i=new Intl.NumberFormat(n,{...r});return a=>i.format(a)}),currency:df((n,r)=>{const i=new Intl.NumberFormat(n,{...r,style:"currency"});return a=>i.format(a)}),datetime:df((n,r)=>{const i=new Intl.DateTimeFormat(n,{...r});return a=>i.format(a)}),relativetime:df((n,r)=>{const i=new Intl.RelativeTimeFormat(n,{...r});return a=>i.format(a,r.range||"day")}),list:df((n,r)=>{const i=new Intl.ListFormat(n,{...r});return a=>i.format(a)})},this.init(t)}init(t){const r=(arguments.length>1&&arguments[1]!==void 0?arguments[1]:{interpolation:{}}).interpolation;this.formatSeparator=r.formatSeparator?r.formatSeparator:r.formatSeparator||","}add(t,n){this.formats[t.toLowerCase().trim()]=n}addCached(t,n){this.formats[t.toLowerCase().trim()]=df(n)}format(t,n,r){let i=arguments.length>3&&arguments[3]!==void 0?arguments[3]:{};return n.split(this.formatSeparator).reduce((s,l)=>{const{formatName:c,formatOptions:u}=Pce(l);if(this.formats[c]){let f=s;try{const p=i&&i.formatParams&&i.formatParams[i.interpolationkey]||{},m=p.locale||p.lng||i.locale||i.lng||r;f=this.formats[c](s,m,{...u,...i,...p})}catch(p){this.logger.warn(p)}return f}else this.logger.warn(`there was no format function for ${c}`);return s},t)}}function Uce(e,t){e.pending[t]!==void 0&&(delete e.pending[t],e.pendingCount--)}class Bce extends dy{constructor(t,n,r){let i=arguments.length>3&&arguments[3]!==void 0?arguments[3]:{};super(),this.backend=t,this.store=n,this.services=r,this.languageUtils=r.languageUtils,this.options=i,this.logger=ms.create("backendConnector"),this.waitingReads=[],this.maxParallelReads=i.maxParallelReads||10,this.readingCalls=0,this.maxRetries=i.maxRetries>=0?i.maxRetries:5,this.retryTimeout=i.retryTimeout>=1?i.retryTimeout:350,this.state={},this.queue=[],this.backend&&this.backend.init&&this.backend.init(r,i.backend,i)}queueLoad(t,n,r,i){const a={},o={},s={},l={};return t.forEach(c=>{let u=!0;n.forEach(f=>{const p=`${c}|${f}`;!r.reload&&this.store.hasResourceBundle(c,f)?this.state[p]=2:this.state[p]<0||(this.state[p]===1?o[p]===void 0&&(o[p]=!0):(this.state[p]=1,u=!1,o[p]===void 0&&(o[p]=!0),a[p]===void 0&&(a[p]=!0),l[f]===void 0&&(l[f]=!0)))}),u||(s[c]=!0)}),(Object.keys(a).length||Object.keys(o).length)&&this.queue.push({pending:o,pendingCount:Object.keys(o).length,loaded:{},errors:[],callback:i}),{toLoad:Object.keys(a),pending:Object.keys(o),toLoadLanguages:Object.keys(s),toLoadNamespaces:Object.keys(l)}}loaded(t,n,r){const i=t.split("|"),a=i[0],o=i[1];n&&this.emit("failedLoading",a,o,n),r&&this.store.addResourceBundle(a,o,r,void 0,void 0,{skipCopy:!0}),this.state[t]=n?-1:2;const s={};this.queue.forEach(l=>{Sce(l.loaded,[a],o),Uce(l,t),n&&l.errors.push(n),l.pendingCount===0&&!l.done&&(Object.keys(l.loaded).forEach(c=>{s[c]||(s[c]={});const u=l.loaded[c];u.length&&u.forEach(f=>{s[c][f]===void 0&&(s[c][f]=!0)})}),l.done=!0,l.errors.length?l.callback(l.errors):l.callback())}),this.emit("loaded",s),this.queue=this.queue.filter(l=>!l.done)}read(t,n,r){let i=arguments.length>3&&arguments[3]!==void 0?arguments[3]:0,a=arguments.length>4&&arguments[4]!==void 0?arguments[4]:this.retryTimeout,o=arguments.length>5?arguments[5]:void 0;if(!t.length)return o(null,{});if(this.readingCalls>=this.maxParallelReads){this.waitingReads.push({lng:t,ns:n,fcName:r,tried:i,wait:a,callback:o});return}this.readingCalls++;const s=(c,u)=>{if(this.readingCalls--,this.waitingReads.length>0){const f=this.waitingReads.shift();this.read(f.lng,f.ns,f.fcName,f.tried,f.wait,f.callback)}if(c&&u&&i{this.read.call(this,t,n,r,i+1,a*2,o)},a);return}o(c,u)},l=this.backend[r].bind(this.backend);if(l.length===2){try{const c=l(t,n);c&&typeof c.then=="function"?c.then(u=>s(null,u)).catch(s):s(null,c)}catch(c){s(c)}return}return l(t,n,s)}prepareLoading(t,n){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},i=arguments.length>3?arguments[3]:void 0;if(!this.backend)return this.logger.warn("No backend was added via i18next.use. Will not load resources."),i&&i();typeof t=="string"&&(t=this.languageUtils.toResolveHierarchy(t)),typeof n=="string"&&(n=[n]);const a=this.queueLoad(t,n,r,i);if(!a.toLoad.length)return a.pending.length||i(),null;a.toLoad.forEach(o=>{this.loadOne(o)})}load(t,n,r){this.prepareLoading(t,n,{},r)}reload(t,n,r){this.prepareLoading(t,n,{reload:!0},r)}loadOne(t){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"";const r=t.split("|"),i=r[0],a=r[1];this.read(i,a,"read",void 0,void 0,(o,s)=>{o&&this.logger.warn(`${n}loading namespace ${a} for language ${i} failed`,o),!o&&s&&this.logger.log(`${n}loaded namespace ${a} for language ${i}`,s),this.loaded(t,o,s)})}saveMissing(t,n,r,i,a){let o=arguments.length>5&&arguments[5]!==void 0?arguments[5]:{},s=arguments.length>6&&arguments[6]!==void 0?arguments[6]:()=>{};if(this.services.utils&&this.services.utils.hasLoadedNamespace&&!this.services.utils.hasLoadedNamespace(n)){this.logger.warn(`did not save key "${r}" as the namespace "${n}" was not yet loaded`,"This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!");return}if(!(r==null||r==="")){if(this.backend&&this.backend.create){const l={...o,isUpdate:a},c=this.backend.create.bind(this.backend);if(c.length<6)try{let u;c.length===5?u=c(t,n,r,i,l):u=c(t,n,r,i),u&&typeof u.then=="function"?u.then(f=>s(null,f)).catch(s):s(null,u)}catch(u){s(u)}else c(t,n,r,i,s,l)}!t||!t[0]||this.store.addResource(t[0],n,r,i)}}}function ZP(){return{debug:!1,initImmediate:!0,ns:["translation"],defaultNS:["translation"],fallbackLng:["dev"],fallbackNS:!1,supportedLngs:!1,nonExplicitSupportedLngs:!1,load:"all",preload:!1,simplifyPluralSuffix:!0,keySeparator:".",nsSeparator:":",pluralSeparator:"_",contextSeparator:"_",partialBundledLanguages:!1,saveMissing:!1,updateMissing:!1,saveMissingTo:"fallback",saveMissingPlurals:!0,missingKeyHandler:!1,missingInterpolationHandler:!1,postProcess:!1,postProcessPassResolved:!1,returnNull:!1,returnEmptyString:!0,returnObjects:!1,joinArrays:!1,returnedObjectHandler:!1,parseMissingKeyHandler:!1,appendNamespaceToMissingKey:!1,appendNamespaceToCIMode:!1,overloadTranslationOptionHandler:function(t){let n={};if(typeof t[1]=="object"&&(n=t[1]),typeof t[1]=="string"&&(n.defaultValue=t[1]),typeof t[2]=="string"&&(n.tDescription=t[2]),typeof t[2]=="object"||typeof t[3]=="object"){const r=t[3]||t[2];Object.keys(r).forEach(i=>{n[i]=r[i]})}return n},interpolation:{escapeValue:!0,format:e=>e,prefix:"{{",suffix:"}}",formatSeparator:",",unescapePrefix:"-",nestingPrefix:"$t(",nestingSuffix:")",nestingOptionsSeparator:",",maxReplaces:1e3,skipOnVariables:!0}}}function JP(e){return typeof e.ns=="string"&&(e.ns=[e.ns]),typeof e.fallbackLng=="string"&&(e.fallbackLng=[e.fallbackLng]),typeof e.fallbackNS=="string"&&(e.fallbackNS=[e.fallbackNS]),e.supportedLngs&&e.supportedLngs.indexOf("cimode")<0&&(e.supportedLngs=e.supportedLngs.concat(["cimode"])),e}function dE(){}function Gce(e){Object.getOwnPropertyNames(Object.getPrototypeOf(e)).forEach(n=>{typeof e[n]=="function"&&(e[n]=e[n].bind(e))})}let DH=class PO extends dy{constructor(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},n=arguments.length>1?arguments[1]:void 0;if(super(),this.options=JP(t),this.services={},this.logger=ms,this.modules={external:[]},Gce(this),n&&!this.isInitialized&&!t.isClone){if(!this.options.initImmediate)return this.init(t,n),this;setTimeout(()=>{this.init(t,n)},0)}}init(){var t=this;let n=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},r=arguments.length>1?arguments[1]:void 0;this.isInitializing=!0,typeof n=="function"&&(r=n,n={}),!n.defaultNS&&n.defaultNS!==!1&&n.ns&&(typeof n.ns=="string"?n.defaultNS=n.ns:n.ns.indexOf("translation")<0&&(n.defaultNS=n.ns[0]));const i=ZP();this.options={...i,...this.options,...JP(n)},this.options.compatibilityAPI!=="v1"&&(this.options.interpolation={...i.interpolation,...this.options.interpolation}),n.keySeparator!==void 0&&(this.options.userDefinedKeySeparator=n.keySeparator),n.nsSeparator!==void 0&&(this.options.userDefinedNsSeparator=n.nsSeparator);function a(u){return u?typeof u=="function"?new u:u:null}if(!this.options.isClone){this.modules.logger?ms.init(a(this.modules.logger),this.options):ms.init(null,this.options);let u;this.modules.formatter?u=this.modules.formatter:typeof Intl<"u"&&(u=Fce);const f=new KP(this.options);this.store=new jP(this.options.resources,this.options);const p=this.services;p.logger=ms,p.resourceStore=this.store,p.languageUtils=f,p.pluralResolver=new Lce(f,{prepend:this.options.pluralSeparator,compatibilityJSON:this.options.compatibilityJSON,simplifyPluralSuffix:this.options.simplifyPluralSuffix}),u&&(!this.options.interpolation.format||this.options.interpolation.format===i.interpolation.format)&&(p.formatter=a(u),p.formatter.init(p,this.options),this.options.interpolation.format=p.formatter.format.bind(p.formatter)),p.interpolator=new kce(this.options),p.utils={hasLoadedNamespace:this.hasLoadedNamespace.bind(this)},p.backendConnector=new Bce(a(this.modules.backend),p.resourceStore,p,this.options),p.backendConnector.on("*",function(m){for(var v=arguments.length,_=new Array(v>1?v-1:0),E=1;E1?v-1:0),E=1;E{m.init&&m.init(this)})}if(this.format=this.options.interpolation.format,r||(r=dE),this.options.fallbackLng&&!this.services.languageDetector&&!this.options.lng){const u=this.services.languageUtils.getFallbackCodes(this.options.fallbackLng);u.length>0&&u[0]!=="dev"&&(this.options.lng=u[0])}!this.services.languageDetector&&!this.options.lng&&this.logger.warn("init: no languageDetector is used and no lng is defined"),["getResource","hasResourceBundle","getResourceBundle","getDataByLanguage"].forEach(u=>{this[u]=function(){return t.store[u](...arguments)}}),["addResource","addResources","addResourceBundle","removeResourceBundle"].forEach(u=>{this[u]=function(){return t.store[u](...arguments),t}});const l=Tm(),c=()=>{const u=(f,p)=>{this.isInitializing=!1,this.isInitialized&&!this.initializedStoreOnce&&this.logger.warn("init: i18next is already initialized. You should call init just once!"),this.isInitialized=!0,this.options.isClone||this.logger.log("initialized",this.options),this.emit("initialized",this.options),l.resolve(p),r(f,p)};if(this.languages&&this.options.compatibilityAPI!=="v1"&&!this.isInitialized)return u(null,this.t.bind(this));this.changeLanguage(this.options.lng,u)};return this.options.resources||!this.options.initImmediate?c():setTimeout(c,0),l}loadResources(t){let r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:dE;const i=typeof t=="string"?t:this.language;if(typeof t=="function"&&(r=t),!this.options.resources||this.options.partialBundledLanguages){if(i&&i.toLowerCase()==="cimode"&&(!this.options.preload||this.options.preload.length===0))return r();const a=[],o=s=>{if(!s||s==="cimode")return;this.services.languageUtils.toResolveHierarchy(s).forEach(c=>{c!=="cimode"&&a.indexOf(c)<0&&a.push(c)})};i?o(i):this.services.languageUtils.getFallbackCodes(this.options.fallbackLng).forEach(l=>o(l)),this.options.preload&&this.options.preload.forEach(s=>o(s)),this.services.backendConnector.load(a,this.options.ns,s=>{!s&&!this.resolvedLanguage&&this.language&&this.setResolvedLanguage(this.language),r(s)})}else r(null)}reloadResources(t,n,r){const i=Tm();return t||(t=this.languages),n||(n=this.options.ns),r||(r=dE),this.services.backendConnector.reload(t,n,a=>{i.resolve(),r(a)}),i}use(t){if(!t)throw new Error("You are passing an undefined module! Please check the object you are passing to i18next.use()");if(!t.type)throw new Error("You are passing a wrong module! Please check the object you are passing to i18next.use()");return t.type==="backend"&&(this.modules.backend=t),(t.type==="logger"||t.log&&t.warn&&t.error)&&(this.modules.logger=t),t.type==="languageDetector"&&(this.modules.languageDetector=t),t.type==="i18nFormat"&&(this.modules.i18nFormat=t),t.type==="postProcessor"&&xH.addPostProcessor(t),t.type==="formatter"&&(this.modules.formatter=t),t.type==="3rdParty"&&this.modules.external.push(t),this}setResolvedLanguage(t){if(!(!t||!this.languages)&&!(["cimode","dev"].indexOf(t)>-1))for(let n=0;n-1)&&this.store.hasLanguageSomeTranslations(r)){this.resolvedLanguage=r;break}}}changeLanguage(t,n){var r=this;this.isLanguageChangingTo=t;const i=Tm();this.emit("languageChanging",t);const a=l=>{this.language=l,this.languages=this.services.languageUtils.toResolveHierarchy(l),this.resolvedLanguage=void 0,this.setResolvedLanguage(l)},o=(l,c)=>{c?(a(c),this.translator.changeLanguage(c),this.isLanguageChangingTo=void 0,this.emit("languageChanged",c),this.logger.log("languageChanged",c)):this.isLanguageChangingTo=void 0,i.resolve(function(){return r.t(...arguments)}),n&&n(l,function(){return r.t(...arguments)})},s=l=>{!t&&!l&&this.services.languageDetector&&(l=[]);const c=typeof l=="string"?l:this.services.languageUtils.getBestMatchFromCodes(l);c&&(this.language||a(c),this.translator.language||this.translator.changeLanguage(c),this.services.languageDetector&&this.services.languageDetector.cacheUserLanguage&&this.services.languageDetector.cacheUserLanguage(c)),this.loadResources(c,u=>{o(u,c)})};return!t&&this.services.languageDetector&&!this.services.languageDetector.async?s(this.services.languageDetector.detect()):!t&&this.services.languageDetector&&this.services.languageDetector.async?this.services.languageDetector.detect.length===0?this.services.languageDetector.detect().then(s):this.services.languageDetector.detect(s):s(t),i}getFixedT(t,n,r){var i=this;const a=function(o,s){let l;if(typeof s!="object"){for(var c=arguments.length,u=new Array(c>2?c-2:0),f=2;f`${l.keyPrefix}${p}${v}`):m=l.keyPrefix?`${l.keyPrefix}${p}${o}`:o,i.t(m,l)};return typeof t=="string"?a.lng=t:a.lngs=t,a.ns=n,a.keyPrefix=r,a}t(){return this.translator&&this.translator.translate(...arguments)}exists(){return this.translator&&this.translator.exists(...arguments)}setDefaultNamespace(t){this.options.defaultNS=t}hasLoadedNamespace(t){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};if(!this.isInitialized)return this.logger.warn("hasLoadedNamespace: i18next was not initialized",this.languages),!1;if(!this.languages||!this.languages.length)return this.logger.warn("hasLoadedNamespace: i18n.languages were undefined or empty",this.languages),!1;const r=n.lng||this.resolvedLanguage||this.languages[0],i=this.options?this.options.fallbackLng:!1,a=this.languages[this.languages.length-1];if(r.toLowerCase()==="cimode")return!0;const o=(s,l)=>{const c=this.services.backendConnector.state[`${s}|${l}`];return c===-1||c===2};if(n.precheck){const s=n.precheck(this,o);if(s!==void 0)return s}return!!(this.hasResourceBundle(r,t)||!this.services.backendConnector.backend||this.options.resources&&!this.options.partialBundledLanguages||o(r,t)&&(!i||o(a,t)))}loadNamespaces(t,n){const r=Tm();return this.options.ns?(typeof t=="string"&&(t=[t]),t.forEach(i=>{this.options.ns.indexOf(i)<0&&this.options.ns.push(i)}),this.loadResources(i=>{r.resolve(),n&&n(i)}),r):(n&&n(),Promise.resolve())}loadLanguages(t,n){const r=Tm();typeof t=="string"&&(t=[t]);const i=this.options.preload||[],a=t.filter(o=>i.indexOf(o)<0&&this.services.languageUtils.isSupportedCode(o));return a.length?(this.options.preload=i.concat(a),this.loadResources(o=>{r.resolve(),n&&n(o)}),r):(n&&n(),Promise.resolve())}dir(t){if(t||(t=this.resolvedLanguage||(this.languages&&this.languages.length>0?this.languages[0]:this.language)),!t)return"rtl";const n=["ar","shu","sqr","ssh","xaa","yhd","yud","aao","abh","abv","acm","acq","acw","acx","acy","adf","ads","aeb","aec","afb","ajp","apc","apd","arb","arq","ars","ary","arz","auz","avl","ayh","ayl","ayn","ayp","bbz","pga","he","iw","ps","pbt","pbu","pst","prp","prd","ug","ur","ydd","yds","yih","ji","yi","hbo","men","xmn","fa","jpr","peo","pes","prs","dv","sam","ckb"],r=this.services&&this.services.languageUtils||new KP(ZP());return n.indexOf(r.getLanguagePartFromCode(t))>-1||t.toLowerCase().indexOf("-arab")>1?"rtl":"ltr"}static createInstance(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},n=arguments.length>1?arguments[1]:void 0;return new PO(t,n)}cloneInstance(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:dE;const r=t.forkResourceStore;r&&delete t.forkResourceStore;const i={...this.options,...t,isClone:!0},a=new PO(i);return(t.debug!==void 0||t.prefix!==void 0)&&(a.logger=a.logger.clone(t)),["store","services","language"].forEach(s=>{a[s]=this[s]}),a.services={...this.services},a.services.utils={hasLoadedNamespace:a.hasLoadedNamespace.bind(a)},r&&(a.store=new jP(this.store.data,i),a.services.resourceStore=a.store),a.translator=new qb(a.services,i),a.translator.on("*",function(s){for(var l=arguments.length,c=new Array(l>1?l-1:0),u=1;u{if(t)for(const n in t)e[n]===void 0&&(e[n]=t[n])}),e}const eF=/^[\u0009\u0020-\u007e\u0080-\u00ff]+$/,Vce=(e,t,n)=>{const r=n||{};r.path=r.path||"/";const i=encodeURIComponent(t);let a=`${e}=${i}`;if(r.maxAge>0){const o=r.maxAge-0;if(Number.isNaN(o))throw new Error("maxAge should be a Number");a+=`; Max-Age=${Math.floor(o)}`}if(r.domain){if(!eF.test(r.domain))throw new TypeError("option domain is invalid");a+=`; Domain=${r.domain}`}if(r.path){if(!eF.test(r.path))throw new TypeError("option path is invalid");a+=`; Path=${r.path}`}if(r.expires){if(typeof r.expires.toUTCString!="function")throw new TypeError("option expires is invalid");a+=`; Expires=${r.expires.toUTCString()}`}if(r.httpOnly&&(a+="; HttpOnly"),r.secure&&(a+="; Secure"),r.sameSite)switch(typeof r.sameSite=="string"?r.sameSite.toLowerCase():r.sameSite){case!0:a+="; SameSite=Strict";break;case"lax":a+="; SameSite=Lax";break;case"strict":a+="; SameSite=Strict";break;case"none":a+="; SameSite=None";break;default:throw new TypeError("option sameSite is invalid")}return a},tF={create(e,t,n,r){let i=arguments.length>4&&arguments[4]!==void 0?arguments[4]:{path:"/",sameSite:"strict"};n&&(i.expires=new Date,i.expires.setTime(i.expires.getTime()+n*60*1e3)),r&&(i.domain=r),document.cookie=Vce(e,encodeURIComponent(t),i)},read(e){const t=`${e}=`,n=document.cookie.split(";");for(let r=0;r-1&&(i=window.location.hash.substring(window.location.hash.indexOf("?")));const o=i.substring(1).split("&");for(let s=0;s0&&o[s].substring(0,l)===t&&(n=o[s].substring(l+1))}}return n}};let Cm=null;const nF=()=>{if(Cm!==null)return Cm;try{Cm=window!=="undefined"&&window.localStorage!==null;const e="i18next.translate.boo";window.localStorage.setItem(e,"foo"),window.localStorage.removeItem(e)}catch{Cm=!1}return Cm};var jce={name:"localStorage",lookup(e){let{lookupLocalStorage:t}=e;if(t&&nF())return window.localStorage.getItem(t)||void 0},cacheUserLanguage(e,t){let{lookupLocalStorage:n}=t;n&&nF()&&window.localStorage.setItem(n,e)}};let Rm=null;const rF=()=>{if(Rm!==null)return Rm;try{Rm=window!=="undefined"&&window.sessionStorage!==null;const e="i18next.translate.boo";window.sessionStorage.setItem(e,"foo"),window.sessionStorage.removeItem(e)}catch{Rm=!1}return Rm};var Wce={name:"sessionStorage",lookup(e){let{lookupSessionStorage:t}=e;if(t&&rF())return window.sessionStorage.getItem(t)||void 0},cacheUserLanguage(e,t){let{lookupSessionStorage:n}=t;n&&rF()&&window.sessionStorage.setItem(n,e)}},Kce={name:"navigator",lookup(e){const t=[];if(typeof navigator<"u"){const{languages:n,userLanguage:r,language:i}=navigator;if(n)for(let a=0;a0?t:void 0}},Qce={name:"htmlTag",lookup(e){let{htmlTag:t}=e,n;const r=t||(typeof document<"u"?document.documentElement:null);return r&&typeof r.getAttribute=="function"&&(n=r.getAttribute("lang")),n}},Xce={name:"path",lookup(e){var i;let{lookupFromPathIndex:t}=e;if(typeof window>"u")return;const n=window.location.pathname.match(/\/([a-zA-Z-]*)/g);return Array.isArray(n)?(i=n[typeof t=="number"?t:0])==null?void 0:i.replace("/",""):void 0}},Zce={name:"subdomain",lookup(e){var i,a;let{lookupFromSubdomainIndex:t}=e;const n=typeof t=="number"?t+1:1,r=typeof window<"u"&&((a=(i=window.location)==null?void 0:i.hostname)==null?void 0:a.match(/^(\w{2,5})\.(([a-z0-9-]{1,63}\.[a-z]{2,6})|localhost)/i));if(r)return r[n]}};function Jce(){return{order:["querystring","cookie","localStorage","sessionStorage","navigator","htmlTag"],lookupQuerystring:"lng",lookupCookie:"i18next",lookupLocalStorage:"i18nextLng",lookupSessionStorage:"i18nextLng",caches:["localStorage"],excludeCacheFor:["cimode"],convertDetectedLanguage:e=>e}}class IH{constructor(t){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};this.type="languageDetector",this.detectors={},this.init(t,n)}init(t){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};this.services=t||{languageUtils:{}},this.options=Hce(n,this.options||{},Jce()),typeof this.options.convertDetectedLanguage=="string"&&this.options.convertDetectedLanguage.indexOf("15897")>-1&&(this.options.convertDetectedLanguage=i=>i.replace("-","_")),this.options.lookupFromUrlIndex&&(this.options.lookupFromPathIndex=this.options.lookupFromUrlIndex),this.i18nOptions=r,this.addDetector(qce),this.addDetector(Yce),this.addDetector(jce),this.addDetector(Wce),this.addDetector(Kce),this.addDetector(Qce),this.addDetector(Xce),this.addDetector(Zce)}addDetector(t){return this.detectors[t.name]=t,this}detect(t){t||(t=this.options.order);let n=[];return t.forEach(r=>{if(this.detectors[r]){let i=this.detectors[r].lookup(this.options);i&&typeof i=="string"&&(i=[i]),i&&(n=n.concat(i))}}),n=n.map(r=>this.options.convertDetectedLanguage(r)),this.services.languageUtils.getBestMatchFromCodes?n:n.length>0?n[0]:null}cacheUserLanguage(t,n){n||(n=this.options.caches),n&&(this.options.excludeCacheFor&&this.options.excludeCacheFor.indexOf(t)>-1||n.forEach(r=>{this.detectors[r]&&this.detectors[r].cacheUserLanguage(t,this.options)}))}}IH.type="languageDetector";const eue={title:"Welcome to Gephi Lite","disclaimer-1":"Gephi Lite is currently a work in progress.","disclaimer-2":"Feel free to check the GitHub project to see more about the upcoming features or to report bugs.",logo:"Gephi logo",open_recent:"Open recent",open_graph:"Open graph file",no_recent:"No remote file has been opened in that browser yet.",samples:"Samples"},tue={title:"Error",unknown:"An unknown error has occurred.",message:"Sorry, we are working to make gephi-lite better, but bugs still happened... It will help us if you can open an issue on github with a description of what you were doing.",retry:"Retry",report:"Report error",not_found:{title:"Page Not Found",subtitle:"The page you were looking for doesn't exist.",paragraph:"You may have mistyped the address or the page may have moved."},form:{required:"Field is required",unique:"Value must be unique, and a data with the same value already exist"},deprecated:{gexf_search_params:"The `gexf=` url params to open a graph file has been renamed as `file=` in version 0.4.0. Using gexf params is deprecated and might be removed in future version. Please use `file=` instead."}},nue={avatar_alt:"{{name}}'s avatar"},rue={open:{cloud:"Open graph from {{provider}}",remote:"Open remote graph",local:"Open local graph",new:"Create a new graph"},save:{default:"Save",cloud:"Save on {{provider}} as..."},download:{gexf:"Save graph locally","gexf-error":"An error occurred while generating GEXF file"}},iue={github:"GitHub"},aue={title:"GitHub authentication",description:"You can log into GitHub from Gephi Lite, to save and load graph files directly as GitHub Gists.",logged_as:"You are currently logged into GitHub as {{username}}.",select_ui_language:"Select application language"},oue={unauth_success:"Unauthentication successful",sign_out:"Sign-out from GitHub",sign_in:"Sign-in to GitHub"},sue={cannot_restore:"Your graph cannot be restored.",restore_successful:"Your work graph has been restored."},lue={title:"Data overview"},cue={nodes_zero:"No selected node",nodes_one:"One selected node",nodes:"{{count}} selected nodes",edges_zero:"No selected edge",edges_one:"One selected edge",edges:"{{count}} selected edges",visible_nodes_zero:"No visible selected node",visible_nodes_one:"One visible selected node",visible_nodes:"{{count}} visible selected nodes",visible_edges_zero:"No visible selected edge",visible_edges_one:"One visible selected edge",visible_edges:"{{count}} visible selected edges",hidden_nodes_one:"One hidden selected node",hidden_nodes:"{{count}} hidden selected nodes",hidden_edges_one:"One hidden selected edge",hidden_edges:"{{count}} hidden selected edges",select_all:"Select all",unselect_all:"Unselect all",unselect_all_hidden_nodes:"Unselect all hidden edges",unselect_all_hidden_edges:"Unselect all hidden edges",unselect_nodes:"Unselect this node",unselect_edges:"Unselect this edge",focus_nodes:"Select only this node",focus_edges:"Select only this edge",empty_nodes:"This node has no attribute",empty_edges:"This edge has no attribute",node_no_label:"(Empty label)",edge_no_label:"(Empty label)",locate_on_graph:"Locate on the graph"},uue={title:"Appearance",partition:"Partition",ranking:"Ranking",show_edges:"Show edges",no_caption:"(no caption)",transformation_methods:{title:"Transformation methods",linear:"linear","pow-2":"pow 2","pow-3":"pow 3",sqrt:"sqrt",log:"log",spline:"spline"},graph:{background_color:"Background color",layout_grid_color:"Layout evaluation grid color"},color:{title:"Color",set_color_from:"Set color from...",data:"Input file",fixed:"A constant color",source:"Source nodes",target:"Target nodes",quanti:"as numbers",quali:"as strings",default_value:"Color for {{items}} with no valid value",color_all_items:"Color for all {{items}}",data_description:"All {{items}} colors are as they are in the input data file.",source_description:"Each edge is colored as its source.",target_description:"Each edge is colored as its target.",scale_point:"Scale point",ranking_intro:"Add color points on this scale"},labels:{title:"Labels",set_labels_from:"Set label from...",set_labels_size_from:"Set label sizes from...",data:"Input data",fixed:"A constant text",fixed_label:"Label for every {{items}}",fixed_label_size:"Label size for every {{items}}",none:"No label",fixed_size:"Fixed size",size:"{{items}} size",default_value:"Label for {{items}} with no valid value",size_coef:"Labels sizes (higher makes labels appear bigger)",adapts_to_zoom:"How much labels should grow with zoom",density:"How many labels should appear any time",data_description:"All {{items}} labels are as they are in the input data file.",none_description:"All {{items}} have no displayed label."},images:{title:"Images",set_labels_from:"Set image from...",data:"Input data",fixed:"A constant URL",fixed_label:"Same image for every {{items}}",none:"No label",default_value:"Image for {{items}} with no valid value",data_description:"All {{items}} images are as they are in the input data file.",none_description:"All {{items}} have no displayed image."},size:{title:"Size",set_size_from:"Set size from...",data:"Input file",fixed:"A constant size",default_value:"Size for {{items}} with no valid value",size_all_items:"Size for all {{items}}",data_description:"All {{items}} sizes are as they are in the input data file."}},due={title:"Filters",description:"This panel allows to filter the graph by stacking filters.",filter:"Filter",add_filter:"Add filter",full_graph:"Full graph",using:"Using",topological:"Topology",desactivated:"Desactivated filter, click to reactivate",no_concurrent_edit:"Only one filter can be edited at a time. Confirm current edition to edit this filter.",range:"range",terms:"exact values",script:"Custom filter",activated:"Activated filter",create_filter:"Create filter",keepMissingValues:"Keep missing values",inapplicable:"Filter disabled: only one value available"},fue={create_nodes:"Create new node",create_edges:"Create new edge",create_nodes_success:"The node has successfully been created.",create_edges_success:"The edge has successfully been created.",update_this_nodes:"Edit this node",update_this_edges:"Edit this edge",update_nodes:"Edit existing node",update_edges:"Edit existing edge",update_nodes_success:"The node has successfully been updated.",update_edges_success:"The edge has successfully been updated.",delete_this_nodes:"Delete this node",delete_this_edges:"Delete this edge",delete_nodes_zero:"Delete nodes",delete_nodes_one:"Delete one node",delete_nodes:"Delete {{count}} nodes",delete_edges_zero:"Delete edges",delete_edges_one:"Delete one edge",delete_edges:"Delete {{count}} edges",confirm_delete_nodes_one:"Are you sure you want to delete this one node?",confirm_delete_nodes:"Are you sure you want to delete {{count}} nodes?",confirm_delete_edges_one:"Are you sure you want to delete this one edge?",confirm_delete_edges:"Are you sure you want to delete {{count}} edges?",search_nodes:"Search on node labels...",delete_nodes_attributes:"Delete the '{{name}}' node attribute",delete_edges_attributes:"Delete the '{{name}}' edge attribute",confirm_delete_attributes:"This deletion will remove {{nbValues}} values from the graph. Are you sure you want to delete the attribute {{name}}?",delete_attributes_success:"The '{{name}}' attribute has been deleted."},pue={title:"Graph",control:{zoomIn:"Zoom In",zoomOut:"Zoom Out",zoomReset:"See the whole graph",fullscreenEnter:"Enter fullscreen mode",fullscreenExit:"Exit fullscreen"},metadata:{title:"Metadata","graph-title":"Title",description:"Description",keywords:"Keywords",authors:"Authors","graph-type":"Graph Type"},partitioning:{title:"Partitioning",description:"To apply appearance or filters differently on different groups of {{items}}, partition your graph using any node qualitative attribute.",partition:"Partition {{items}} on",status_no_partition:"{{items}} are not partitioned",status_item_preview:"The {{items}} will be grouped into",status_item:"The {{items}} are grouped into",status_partition:"{{nbPartitions}} partitions using the '{{attribute}}' attribute.",warning_nbMissing:"{{nbMissingValues}} {{items}} don't have a value for this attribute.",missing_partition_preview:"They will be grouped into a 'missing value' partition.",missing_partition:"They are grouped into a 'missing value' partition."},model:{title:"Attributes' Model",no_attributes:"There is no attribute in the model yet.",attribute:{qualitative:"Qualitative",quantitative:"Quantitative"},directed:"Directed",undirected:"Undirected",mixed:"Mixed",graph:"graph",nodes_one:"node",nodes_zero:"node",nodes:"nodes",edges_one:"edge",edges_zero:"edge",edges:"edges","nodes-data":{id:"Node ID",label:"Node label",size:"Node size",color:"Node color",x:"Node x position",y:"Node y position",attributes:"Other attributes","attribute-name":"Attribute name","attribute-value":"Attribute value","new-attribute":"Add new attribute"},"edges-data":{id:"Edge ID",source:"Edge source",target:"Edge target",label:"Edge label",color:"Edge color",weight:"Edge weight",attributes:"Other attributes","attribute-name":"Attribute name","attribute-value":"Attribute value","new-attribute":"Add new attribute"},warnings:{missing:"{{nbValues}} missing values",wrong:"{{nbValues}} values are not quantitative",allMissing:"No values in the graph"}},open:{title:"Open a graph file",local:{title:"Open a local file",dragndrop_text:"Drag'n'drop a GEXF or GRAPHML file",success:"File {{filename}} has been successfully loaded",error:"An error occurred while opening the file. Please check that the file is a valid."},remote:{title:"Open an url","url-field":"URL of a GEXF or GRAPHML file",success:"File {{filename}} has been successfully loaded",error:"An error occurred while opening the file. Please check your connectivity and that the file is a valid."},cloud:{title:"Open a file from {{provider}}","no-data":"You have no GEXF or GRAPHML file saved on {{provider}}","file-open-external":"Open {{filename}} on {{provider}}","select-file":"Select a file",success:"File {{filename}} has been successfully loaded",error:"A technical error occurred. Please check your connectivity or try later."},new:{title:"Open an empty graph",message:"Current graph will be cleared, are you sure you want to continue ?",success:"Empty graph loaded"}},save:{title:"Save graph",cloud:{title:"Save in {{provider}} as...",field:{filename:"Filename",description:"Description",isPublic:"Create a public gist"},success:"File {{filename}} has been successfully saved",error:"An error occurred while saving your graph. Please check your connectivity or try later."}},export:{title:"Export graph",png:{title:"Export PNG snapshot",success:"Your graph PNG export has successfully been saved.",fields:{filename:"Filename",width:"Width (in pixels)",height:"Height (in pixels)",preserve_camera:"Preserve current camera position"}}},caption:{color:"Color {{itemType}} by",size:"Size {{itemType}} by",title:"Caption",disabled:"Caption is available once appearance has been set."}},gue={title:"Statistics",compute_one:"Compute metric",compute:"Compute metrics",success_one:'The {{items}} metric "{{metrics}}" has been added to the data.',success:'The {{items}} metrics "{{metrics}}" have been added to the data.',description:"This panel allows computing new attributes to the nodes or edges of the graph. These attributes can later be used in the other panels, for appearance or filtering for instance.",placeholder:"Select an algorithm",attributes_placeholder:"None",nodes_attribute_already_exists:'A node attribute named "{{field}}" already exists. Its values will be overridden.',edges_attribute_already_exists:'An edge attribute named "{{field}}" already exists. Its values will be overridden.',nodes:{louvain:{title:"Louvain community detection",description:"This algorithm aims at splitting the nodes as densely connected groups.",attributes:{modularityClass:"Modularity class attribute name"},parameters:{getEdgeWeight:{title:"Edge weight attribute",description:"An edge attribute that would represent edge weights."},fastLocalMoves:{title:"Fast local moves",description:"Whether to use a well-known optimization relying on a queue set to traverse the graph more efficiently."},randomWalk:{title:"Random walk",description:"Whether to traverse the graph randomly."},resolution:{title:"Resolution",description:"An increased resolution should produce more communities."}}},pagerank:{title:"PageRank",attributes:{pagerank:"PageRank attribute name"},parameters:{getEdgeWeight:{title:"Edge weight attribute"},alpha:{title:"Alpha"},maxIterations:{title:"Max iterations"},tolerance:{title:"Tolerance"}}},betweennessCentrality:{title:"Betweenness centrality",attributes:{betweennessCentrality:"Betweenness centrality attribute name"},parameters:{getEdgeWeight:{title:"Edge weight attribute"},normalize:{title:"Normalize output?"}}},degree:{title:"Degree",attributes:{degree:"Degree attribute name"},parameters:{getEdgeWeight:{title:"Edge weight attribute"},kind:{title:"Type of degree",values:{degree:"Degree",inDegree:"Incoming degree",outDegree:"Outgoing degree"}}}},hits:{title:"HITS",attributes:{authorities:"Authority score attribute name",hubs:"Hub score attribute name"},parameters:{getEdgeWeight:{title:"Edge weight attribute"},maxIterations:{title:"Max iterations"},normalize:{title:"Normalize output?"},tolerance:{title:"Tolerance"}}},nodescript:{title:"Custom node metric",description:"Define a function that compute a metric for a node.",attributes:{custom:"Attribute name on which to store the metric"}}},edges:{disparity:{title:"Disparity",attributes:{disparity:"Disparity attribute name"},parameters:{getEdgeWeight:{title:"Edge weight attribute"}}},simmelianStrength:{title:"Simmelian strength",attributes:{simmelianStrength:"Simmelian strength attribute name"}},edgescript:{title:"Custom edge metric",description:"Define a function that compute a metric for an edge.",attributes:{custom:"Attribute name on which to store the metric"}}}},mue={title:"Layout",description:"This panel allows computing new coordinates to nodes of the graph. ",placeholder:"Select a layout algorithm",exec:{success:'Layout "{{layout}}" has successfully been applied.',started:"Layout {{layout}} is running",stopped:"Layout {{layout}} has been stopped"},random:{title:"Random",description:"Random layout positioning every node by choosing each coordinates uniformly at random on the interval [0, 1)",parameters:{scale:{title:"Scale",description:"Scale of the layout"},center:{title:"Center",description:"Center of the layout"}}},circular:{title:"Circular",description:"Arranges the node in a circle",parameters:{scale:{title:"Scale",description:"Scale of the layout"},center:{title:"Center",description:"Center of the layout"}}},circlePack:{title:"CirclePack",description:"Arranges the nodes as a bubble chart, according to specified attributes",parameters:{scale:{title:"Scale",description:"Scale of the layout"},groupingField:{title:"Hierarchy attribute",description:"An optional attribute to use to group the nodes"},center:{title:"Center",description:"Center of the layout"}}},fa2:{title:"ForceAtlas2",buttons:{autoSettings:{title:"Guess settings",description:"Generates settings that fit the current graph the best"}},parameters:{adjustSizes:{title:"Adjust sizes?",description:"Should the node’s sizes be taken into account?"},barnesHutOptimize:{title:"barnesHutOptimize",description:"Whether to use the Barnes-Hut approximation to compute repulsion in O(n*log(n)) rather than default O(n^2), n being the number of nodes"},barnesHutTheta:{title:"barnesHutTheta",description:"Barnes-Hut approximation theta parameter"},edgeWeightInfluence:{title:"Edge weight influence",description:"Influence of the edge’s weights on the layout"},gravity:{title:"Gravity",description:"Strength of the layout’s gravity"},linLogMode:{title:"linLog mode",description:"Whether to use Noack’s LinLog model."},outboundAttractionDistribution:{title:"Out bound attraction distribution"},scalingRatio:{title:"Scaling ratio"},slowDown:{title:"Slow down?"},strongGravityMode:{title:"Strong gravity mode?"}}},force:{title:"Force directed",parameters:{attraction:{title:"Attraction",description:"Importance of the attraction force, that attracts each pair of connected nodes like elastics"},repulsion:{title:"Repulsion",description:"Importance of the repulsion force, that attracts each pair of nodes like magnets"},gravity:{title:"Gravity",description:"Importance of the gravity force, that attracts all nodes to the center"},inertia:{title:"Inertia",description:"Percentage of a node vector displacement that is preserved at each step. 0 means no inertia, 1 means no friction"},maxMove:{title:"Maximum move",description:"Maximum length a node can travel at each step, in pixel"}}},noverlap:{title:"Noverlap",description:"Anti-collision layout algorithm",parameters:{gridSize:{title:"Grid size",description:"Number of grid cells horizontally and vertically subdivising the graph’s space. This is used as an optimization scheme. Set it to 1 and you will have O(n²) time complexity, which can sometimes perform better with very few nodes."},margin:{title:"Margin",description:"Margin to keep between nodes"},expansion:{title:"Expansion",description:"Percentage of current space that nodes could attempt to move outside of"},ratio:{title:"Ratio",description:"Ratio scaling node sizes"},speed:{title:"Speed",description:"Dampening factor that will slow down node movements to ease the overall process"}}},script:{title:"Custom layout",description:"Write your own layout by creating a function that returns a {x,y} object for each node",parameters:{}},quality:{title:"Layout quality",description:"Are connected nodes closer thanks to the layout?",enable:"Enable Connected-closeness",showGrid:"Show the Δmax grid",caption_CMax:"of edges are shorter than Δmax thanks to the layout",caption_deltaMax:"Grid size = Δmax = "}},hue={title:"Data management",login_capabilities:"You can log into GitHub from Gephi Lite, to save and load graph files directly as GitHub Gists:"},_ue={add:"Add",all:"All",apply:"Apply",cancel:"Cancel",clear:"Clear",close:"Close",collapse:"Collapse",confirm:"Confirm",copy:"Copy",created:"Created",delete:"Delete",edit:"Edit",expand:"Expand",filename:"Filename",hide:"Hide","load-more":"Load more",loading:"Loading",min:"Min",max:"Max",none:"None",open:"Open",open_file:"Open {{filename}}",open_code_editor:"Open code editor",remove:"Remove",reset:"Reset",save:"Save","save-and-run":"Save and run",select:"Select...",start:"Start",stop:"Stop",size:"Size",show:"Show",show_more:"Show more",show_less:"Show less",submit:"Submit",updated:"Updated"},vue={github:{title:"GitHub",auth:{title:"GitHub authentification",asking_for_device_code:"Asking github for device code",copy_code:'Copy the code below, and click on "Open GitHub" button. It will opened a new tab, on which GitHub will ask you the code',copy_success:"Code saved in clipboard",waiting_validation:"Waiting validation"}}},Eue={graph:{placeholder:"Search for nodes, edges ...",no_result:"No results",help:"Type something to search",other_result:"... and {{count}} other results",select_all_nodes:"Add {{count}} nodes in the selection",select_all_edges:"Add {{count}} edges in the selection"},nodes:{placeholder:"Search a node ...",no_result:"No node found",help:"Type something to find a node",other_result:"... and {{count}} other nodes",select_all:"Select all {{count}} nodes"},edges:{placeholder:"Search an edge...",no_result:"No edge found",help:"Type something to find an edge",other_result:"... and {{count}} other edges",select_all:"Select all {{count}} edges"}},bue={title:"User's settings","danger-zone":{title:"Danger zone","reset-state":{title:"Reset application state",description:"All your data will be deleted, even the settings saved locally (ie. in your browser). Are you sure ?",success:"Application's state has been cleared"}},theme:"Choose a theme"},Sue={welcome:eue,"gephi-lite":{title:"Gephi Lite",info:"More info on Gephi Lite"},error:tue,user:nue,menu:rue,providers:iue,github:aue,auth:oue,storage:sue,context:lue,selection:cue,appearance:uue,filters:due,edition:fue,graph:pue,statistics:gue,layouts:mue,file:hue,common:_ue,cloud:vue,search:Eue,settings:bue},yue={title:"Welcome to Gephi Lite","disclaimer-1":"Gephi Lite is currently a work in progress.","disclaimer-2":"Feel free to check the GitHub project to see more about the upcoming features or to report bugs.",logo:"Gephi logo",open_recent:"Open recent",open_graph:"Open graph file",no_recent:"No remote file has been opened in that browser yet.",samples:"Samples"},Tue={title:"Error",unknown:"An unknown error has occurred.",message:"Sorry, we are working to make gephi-lite better but bugs still happened... It will help us if you can open an issue on github with a description of what you were doing.",report:"Report error",retry:"Retry",not_found:{title:"Page Not Found",subtitle:"The page you were looking for doesn't exist.",paragraph:"You may have mistyped the address or the page may have moved."},form:{required:"Field is required",unique:"Value must be unique, and a data with the same value already exist"}},Cue={avatar_alt:"{{name}}'s avatar"},Rue={open:{cloud:"Open graph from {{provider}}",remote:"Open remote graph",local:"Open local graph",new:"Create a new graph"},save:{default:"Save",cloud:"Save on {{provider}} as..."},download:{gexf:"Save graph locally","gexf-error":"An error occurred while generating GEXF file"},new:{title:"Open an empty graph",message:"Current graph will be cleared, are you sure you want to continue ?",success:"Empty graph loaded"}},Nue={github:"GitHub"},Aue={title:"GitHub authentication",description:"You can log into GitHub from Gephi Lite, to save and load graph files directly as GitHub Gists.",logged_as:"You are currently logged into GitHub as {{username}}.",select_ui_language:"Select application language"},wue={unauth_success:"Unauthentication successful",sign_out:"Sign-out from GitHub",sign_in:"Sign-in to GitHub"},Oue={cannot_restore:"Your graph cannot be restored.",restore_successful:"Your work graph has been restored."},xue={title:"Data overview"},Due={nodes_zero:"No selected node",nodes_one:"One selected node",nodes:"{{count}} selected nodes",edges_zero:"No selected edge",edges_one:"One selected edge",edges:"{{count}} selected edges",visible_nodes_zero:"No visible selected node",visible_nodes_one:"One visible selected node",visible_nodes:"{{count}} visible selected nodes",visible_edges_zero:"No visible selected edge",visible_edges_one:"One visible selected edge",visible_edges:"{{count}} visible selected edges",hidden_nodes_one:"One hidden selected node",hidden_nodes:"{{count}} hidden selected nodes",hidden_edges_one:"One hidden selected edge",hidden_edges:"{{count}} hidden selected edges",select_all:"Select all",unselect_all:"Unselect all",unselect_all_hidden_nodes:"Unselect all hidden edges",unselect_all_hidden_edges:"Unselect all hidden edges",unselect_nodes:"Unselect this node",unselect_edges:"Unselect this edge",focus_nodes:"Select only this node",focus_edges:"Select only this edge",empty_nodes:"This node has no attribute",empty_edges:"This edge has no attribute",node_no_label:"(Empty label)",edge_no_label:"(Empty label)",locate_on_graph:"Locate on the graph"},Iue={title:"Appearance",partition:"Partition",ranking:"Ranking",show_edges:"Show edges",transformation_methods:{title:"Transformation methods",linear:"linear","pow-2":"pow 2","pow-3":"pow 3",sqrt:"sqrt",log:"log",spline:"spline"},graph:{background_color:"Background color",layout_grid_color:"Layout evaluation grid color"},color:{title:"Color",set_color_from:"Set color from...",data:"Input file",fixed:"A constant color",source:"Source nodes",target:"Target nodes",quanti:"as numbers",quali:"as strings",default_value:"Color for {{items}} with no valid value",color_all_items:"Color for all {{items}}",data_description:"All {{items}} colors are as they are in the input data file.",source_description:"Each edge is colored as its source.",target_description:"Each edge is colored as its target.",scale_point:"Scale point",ranking_intro:"Add color points on this scale"},labels:{title:"Labels",set_labels_from:"Set label from...",set_labels_size_from:"Set label sizes from...",data:"Input data",fixed:"A constant text",fixed_label:"Label for every {{items}}",fixed_label_size:"Label size for every {{items}}",none:"No label",fixed_size:"Fixed size",size:"{{items}} size",default_value:"Label for {{items}} with no valid value",size_coef:"Labels sizes (higher makes labels appear bigger)",adapts_to_zoom:"How much labels should grow with zoom",density:"How many labels should appear any time",data_description:"All {{items}} labels are as they are in the input data file.",none_description:"All {{items}} have no displayed label."},images:{title:"Images",set_labels_from:"Set image from...",data:"Input data",fixed:"A constant URL",fixed_label:"Same image for every {{items}}",none:"No label",default_value:"Image for {{items}} with no valid value",data_description:"All {{items}} images are as they are in the input data file.",none_description:"All {{items}} have no displayed image."},size:{title:"Size",set_size_from:"Set size from...",data:"Input file",fixed:"A constant size",default_value:"Size for {{items}} with no valid value",size_all_items:"Size for all {{items}}",data_description:"All {{items}} sizes are as they are in the input data file."},no_caption:"(no caption)"},Mue={title:"Filters",description:"This panel allows to filter the graph by stacking filters.",filter:"Filter",add_filter:"Add filter",full_graph:"Full graph",using:"Using",topological:"Topology",desactivated:"Desactivated filter, click to reactivate",no_concurrent_edit:"Only one filter can be edited at a time. Confirm current edition to edit this filter.",range:"range",terms:"exact values",script:"Custom filter",activated:"Activated filter",create_filter:"Create filter",keepMissingValues:"Keep missing values",inapplicable:"Filter disabled: only one value available"},Lue={create_nodes:"Create new node",create_edges:"Create new edge",create_nodes_success:"The node has successfully been created.",create_edges_success:"The edge has successfully been created.",update_this_nodes:"Edit this node",update_this_edges:"Edit this edge",update_nodes:"Edit existing node",update_edges:"Edit existing edge",update_nodes_success:"The node has successfully been updated.",update_edges_success:"The edge has successfully been updated.",delete_this_nodes:"Delete this node",delete_this_edges:"Delete this edge",delete_nodes_zero:"Delete nodes",delete_nodes_one:"Delete one node",delete_nodes:"Delete {{count}} nodes",delete_edges_zero:"Delete edges",delete_edges_one:"Delete one edge",delete_edges:"Delete {{count}} edges",confirm_delete_nodes_one:"Are you sure you want to delete this one node?",confirm_delete_nodes:"Are you sure you want to delete {{count}} nodes?",confirm_delete_edges_one:"Are you sure you want to delete this one edge?",confirm_delete_edges:"Are you sure you want to delete {{count}} edges?",search_nodes:"Search on node labels..."},kue={title:"Graph",control:{zoomIn:"Zoom In",zoomOut:"Zoom Out",zoomReset:"See the whole graph",fullscreenEnter:"Enter fullscreen mode",fullscreenExit:"Exit fullscreen"},metadata:{title:"Metadata","graph-title":"Title",description:"Description",keywords:"Keywords",authors:"Authors","graph-type":"Graph Type"},partitioning:{title:"Partitioning",description:"To apply appearance or filters differently on different groups of {{items}}, partition your graph using any node qualitative attribute.",partition:"Partition {{items}} on",status_no_partition:"{{items}} are not partitioned",status_item_preview:"The {{items}} will be grouped into",status_item:"The {{items}} are grouped into",status_partition:"{{nbPartitions}} partitions using the '{{attribute}}' attribute.",warning_nbMissing:"{{nbMissingValues}} {{items}} don't have a value for this attribute.",missing_partition_preview:"They will be grouped into a 'missing value' partition.",missing_partition:"They are grouped into a 'missing value' partition."},model:{title:"Attributes' Model",no_attributes:"There is no attribute in the model yet.",attribute:{qualitative:"Qualitative",quantitative:"Quantitative"},directed:"Directed",undirected:"Undirected",mixed:"Mixed",graph:"graph",nodes_one:"node",nodes_zero:"node",nodes:"nodes",edges_one:"edge",edges_zero:"edge",edges:"edges","nodes-data":{id:"Node ID",label:"Node label",size:"Node size",color:"Node color",x:"Node x position",y:"Node y position",attributes:"Other attributes","attribute-name":"Attribute name","attribute-value":"Attribute value","new-attribute":"Add new attribute"},"edges-data":{id:"Edge ID",source:"Edge source",target:"Edge target",label:"Edge label",color:"Edge color",weight:"Edge weight",attributes:"Other attributes","attribute-name":"Attribute name","attribute-value":"Attribute value","new-attribute":"Add new attribute"}},open:{title:"Open a graph file",local:{title:"Open a local file",dragndrop_text:"Drag'n'drop a GEXF or GRAPHML file",success:"File {{filename}} has been successfully loaded",error:"An error occurred while opening the file. Please check that the file is a valid."},remote:{title:"Open an url","url-field":"URL of a GEXF or GRAPHML file",success:"File {{filename}} has been successfully loaded",error:"An error occurred while opening the file. Please check your connectivity and that the file is a valid."},cloud:{title:"Open a file from {{provider}}","no-data":"You have no GEXF or GRAPHML file saved on {{provider}}","file-open-external":"Open {{filename}} on {{provider}}","select-file":"Select a file",success:"File {{filename}} has been successfully loaded",error:"A technical error occurred. Please check your connectivity or try later."}},save:{title:"Save graph",cloud:{title:"Save in {{provider}} as...",field:{filename:"Filename",description:"Description",isPublic:"Create a public gist"},success:"File {{filename}} has been successfully saved",error:"An error occurred while saving your graph. Please check your connectivity or try later."}},export:{title:"Export graph",png:{title:"Export PNG snapshot",success:"Your graph PNG export has successfully been saved.",fields:{filename:"Filename",width:"Width (in pixels)",height:"Height (in pixels)",preserve_camera:"Preserve current camera position"}}},caption:{color:"Color {{itemType}} by",size:"Size {{itemType}} by",title:"Caption",disabled:"Caption is available once appearance has been set."}},Pue={title:"Statistics",compute_one:"Compute metric",compute:"Compute metrics",success_one:'The {{items}} metric "{{metrics}}" has been added to the data.',success:'The {{items}} metrics "{{metrics}}" have been added to the data.',description:"This panel allows computing new attributes to the nodes or edges of the graph. These attributes can later be used in the other panels, for appearance or filtering for instance.",placeholder:"Select an algorithm",attributes_placeholder:"None",nodes_attribute_already_exists:'A node attribute named "{{field}}" already exists. Its values will be overridden.',edges_attribute_already_exists:'An edge attribute named "{{field}}" already exists. Its values will be overridden.',nodes:{louvain:{title:"Louvain community detection",description:"This algorithm aims at splitting the nodes as densely connected groups.",attributes:{modularityClass:"Modularity class attribute name"},parameters:{getEdgeWeight:{title:"Edge weight attribute",description:"An edge attribute that would represent edge weights."},fastLocalMoves:{title:"Fast local moves",description:"Whether to use a well-known optimization relying on a queue set to traverse the graph more efficiently."},randomWalk:{title:"Random walk",description:"Whether to traverse the graph randomly."},resolution:{title:"Resolution",description:"An increased resolution should produce more communities."}}},pagerank:{title:"PageRank",attributes:{pagerank:"PageRank attribute name"},parameters:{getEdgeWeight:{title:"Edge weight attribute"},alpha:{title:"Alpha"},maxIterations:{title:"Max iterations"},tolerance:{title:"Tolerance"}}},betweennessCentrality:{title:"Betweenness centrality",attributes:{betweennessCentrality:"Betweenness centrality attribute name"},parameters:{getEdgeWeight:{title:"Edge weight attribute"},normalize:{title:"Normalize output?"}}},degree:{title:"Degree",attributes:{degree:"Degree attribute name"},parameters:{getEdgeWeight:{title:"Edge weight attribute"},kind:{title:"Type of degree",values:{degree:"Degree",inDegree:"Incoming degree",outDegree:"Outgoing degree"}}}},hits:{title:"HITS",attributes:{authorities:"Authority score attribute name",hubs:"Hub score attribute name"},parameters:{getEdgeWeight:{title:"Edge weight attribute"},maxIterations:{title:"Max iterations"},normalize:{title:"Normalize output?"},tolerance:{title:"Tolerance"}}},nodescript:{title:"Custom node metric",description:"Define a function that compute a metric for a node.",attributes:{custom:"Attribute name on which to store the metric"}}},edges:{disparity:{title:"Disparity",attributes:{disparity:"Disparity attribute name"},parameters:{getEdgeWeight:{title:"Edge weight attribute"}}},simmelianStrength:{title:"Simmelian strength",attributes:{simmelianStrength:"Simmelian strength attribute name"}},edgescript:{title:"Custom edge metric",description:"Define a function that compute a metric for an edge.",attributes:{custom:"Attribute name on which to store the metric"}}}},Fue={title:"Layout",description:"This panel allows computing new coordinates to nodes of the graph. ",placeholder:"Select a layout algorithm",exec:{success:'Layout "{{layout}}" has successfully been applied.',started:"Layout {{layout}} is running",stopped:"Layout {{layout}} has been stopped"},random:{title:"Random",description:"Random layout positioning every node by choosing each coordinates uniformly at random on the interval [0, 1)",parameters:{scale:{title:"Scale",description:"Scale of the layout"},center:{title:"Center",description:"Center of the layout"}}},circular:{title:"Circular",description:"Arranges the node in a circle",parameters:{scale:{title:"Scale",description:"Scale of the layout"},center:{title:"Center",description:"Center of the layout"}}},circlePack:{title:"CirclePack",description:"Arranges the nodes as a bubble chart, according to specified attributes",parameters:{scale:{title:"Scale",description:"Scale of the layout"},groupingField:{title:"Hierarchy attribute",description:"An optional attribute to use to group the nodes"},center:{title:"Center",description:"Center of the layout"}}},fa2:{title:"ForceAtlas2",buttons:{autoSettings:{title:"Guess settings",description:"Generates settings that fit the current graph the best"}},parameters:{adjustSizes:{title:"Adjust sizes?",description:"Should the node’s sizes be taken into account?"},barnesHutOptimize:{title:"barnesHutOptimize",description:"Whether to use the Barnes-Hut approximation to compute repulsion in O(n*log(n)) rather than default O(n^2), n being the number of nodes"},barnesHutTheta:{title:"barnesHutTheta",description:"Barnes-Hut approximation theta parameter"},edgeWeightInfluence:{title:"Edge weight influence",description:"Influence of the edge’s weights on the layout"},gravity:{title:"Gravity",description:"Strength of the layout’s gravity"},linLogMode:{title:"linLog mode",description:"Whether to use Noack’s LinLog model."},outboundAttractionDistribution:{title:"Out bound attraction distribution"},scalingRatio:{title:"Scaling ratio"},slowDown:{title:"Slow down?"},strongGravityMode:{title:"Strong gravity mode?"}}},force:{title:"Force directed",parameters:{attraction:{title:"Attraction",description:"Importance of the attraction force, that attracts each pair of connected nodes like elastics"},repulsion:{title:"Repulsion",description:"Importance of the repulsion force, that attracts each pair of nodes like magnets"},gravity:{title:"Gravity",description:"Importance of the gravity force, that attracts all nodes to the center"},inertia:{title:"Inertia",description:"Percentage of a node vector displacement that is preserved at each step. 0 means no inertia, 1 means no friction"},maxMove:{title:"Maximum move",description:"Maximum length a node can travel at each step, in pixel"}}},noverlap:{title:"Noverlap",description:"Anti-collision layout algorithm",parameters:{gridSize:{title:"Grid size",description:"Number of grid cells horizontally and vertically subdivising the graph’s space. This is used as an optimization scheme. Set it to 1 and you will have O(n²) time complexity, which can sometimes perform better with very few nodes."},margin:{title:"Margin",description:"Margin to keep between nodes"},expansion:{title:"Expansion",description:"Percentage of current space that nodes could attempt to move outside of"},ratio:{title:"Ratio",description:"Ratio scaling node sizes"},speed:{title:"Speed",description:"Dampening factor that will slow down node movements to ease the overall process"}}},script:{title:"Custom layout",description:"Write your own layout by creating a function that returns a {x,y} object for each node"}},Uue={title:"Data management",login_capabilities:"You can log into GitHub from Gephi Lite, to save and load graph files directly as GitHub Gists:"},Bue={add:"Add",all:"All",apply:"Apply",cancel:"Cancel",clear:"Clear",close:"Close",collapse:"Collapse",confirm:"Confirm",copy:"Copy",created:"Created",delete:"Delete",edit:"Edit",expand:"Expand",filename:"Filename",hide:"Hide","load-more":"Load more",loading:"Loading",min:"Min",max:"Max",none:"None",open:"Open",open_file:"Open {{filename}}",open_code_editor:"Open code editor",remove:"Remove",reset:"Reset",save:"Save","save-and-run":"Save and run",select:"Select...",start:"Start",stop:"Stop",size:"Size",show:"Show",show_more:"Show more",show_less:"Show less",submit:"Submit",updated:"Updated"},Gue={github:{title:"GitHub",auth:{title:"GitHub authentification",asking_for_device_code:"Asking github for device code",copy_code:'Copy the code below, and click on "Open GitHub" button. It will opened a new tab, on which GitHub will ask you the code',copy_success:"Code saved in clipboard",waiting_validation:"Waiting validation"}}},$ue={graph:{placeholder:"Search for nodes, edges ...",no_result:"No results",help:"Type something to search",other_result:"... and {{count}} other results",select_all_nodes:"Add {{count}} nodes in the selection",select_all_edges:"Add {{count}} edges in the selection"},nodes:{placeholder:"Search a node ...",no_result:"No node found",help:"Type something to find a node",other_result:"... and {{count}} other nodes"},edges:{placeholder:"Search an edge...",no_result:"No edge found",help:"Type something to find an edge",other_result:"... and {{count}} other edges"}},zue={title:"User's settings","danger-zone":{title:"Danger zone","reset-state":{title:"Reset application state",description:"All your data will be deleted, even the settings saved locally (ie. in your browser). Are you sure ?",success:"Application's state has been cleared"}}},Hue={welcome:yue,"gephi-lite":{title:"Gephi Lite",info:"More info on Gephi Lite"},error:Tue,user:Cue,menu:Rue,providers:Nue,github:Aue,auth:wue,storage:Oue,context:xue,selection:Due,appearance:Iue,filters:Mue,edition:Lue,graph:kue,statistics:Pue,layouts:Fue,file:Uue,common:Bue,cloud:Gue,search:$ue,settings:zue},Vue={title:"Bienvenue dans Gephi Lite","disclaimer-1":"Gephi Lite est actuellement en cours de développement.","disclaimer-2":"N'hésitez pas à consulter le projet GitHub pour en savoir plus sur les fonctionnalités à venir ou pour signaler des bugs.",logo:"Logo de Gephi",open_recent:"Fichiers récemment ouverts",open_graph:"Ouvrir un fichier de graphe",no_recent:"Aucun fichier distant n'a été ouvert dans ce navigateur pour le moment.",samples:"Exemples"},que={title:"Erreur",unknown:"Une erreur inconnue s'est produite.",message:"Désolé ! gephi-lite est en constante amélioration mais des bugs nous échappe... Vous pouvez signaler cette erreur sur github en cliquant sur le bouton ci-dessous.",report:"Signaler l'erreur",retry:"Ré-essayer",not_found:{title:"Page non trouvée",subtitle:"La page que vous recherchez n'existe pas.",paragraph:"Vous avez peut-être mal saisi l'adresse ou la page a été déplacée."},form:{required:"Champs requis",unique:"Une autre entrée existe déjà avec cette valeur"}},Yue={avatar_alt:"Avatar de {{name}}"},jue={open:{cloud:"Ouvrir un graphe depuis {{provider}}",remote:"Ouvrir un graphe distant",local:"Ouvrir un graphe local",new:"Créer un nouveau graphe"},save:{default:"Enregistrer",cloud:"Enregistrer sur {{provider}} sous..."},download:{gexf:"Enregistrer le graphe localement","gexf-error":"Une erreur s'est produite lors de la génération du fichier GEXF"}},Wue={github:"GitHub"},Kue={title:"Authentification GitHub",select_ui_language:"Sélectionner le langage de l'application",description:"Vous pouvez vous connecter à GitHub depuis Gephi Lite pour enregistrer et charger des fichiers de graphe directement en tant que gists GitHub.",logged_as:"Vous êtes actuellement connecté à GitHub en tant que {{username}}."},Que={unauth_success:"Déconnexion réussie",sign_out:"Se déconnecter de GitHub",sign_in:"Se connecter à GitHub"},Xue={cannot_restore:"Votre graphe ne peut pas être restauré.",restore_successful:"Votre graphe de travail a été restauré."},Zue={title:"Aperçu des données"},Jue={nodes_zero:"Aucun élément sélectionné",nodes_one:"Un nœud sélectionné",nodes:"{{count}} nœuds sélectionnés",edges_zero:"Aucun élément sélectionné",edges_one:"Un lien sélectionné",edges:"{{count}} liens sélectionnés",visible_nodes_zero:"Aucun élément sélectionné visible",visible_nodes_one:"Un nœud sélectionné visible",visible_nodes:"{{count}} nœuds sélectionnés visibles",visible_edges_zero:"Aucun élément sélectionné visible",visible_edges_one:"Un lien sélectionné visible",visible_edges:"{{count}} liens sélectionnés visibles",hidden_nodes_one:"Un nœud sélectionné masqué",hidden_nodes:"{{count}} nœuds sélectionnés masqués",hidden_edges_one:"Un lien sélectionné masqué",hidden_edges:"{{count}} liens sélectionnés masqués",select_all:"Sélectionner tout",unselect_all:"Tout désélectionner",unselect_all_hidden_nodes:"Tout désélectionner pour les nœuds masqués",unselect_all_hidden_edges:"Tout désélectionner pour les liens masqués",unselect_nodes:"Désélectionner ce nœud",unselect_edges:"Désélectionner ce lien",focus_nodes:"Sélectionner uniquement ce nœud",focus_edges:"Sélectionner uniquement ce lien",empty_nodes:"Ce nœud n'a pas d'attribut",empty_edges:"Ce lien n'a pas d'attribut",node_no_label:"(libellé vide)",edge_no_label:"(libellé vide)",locate_on_graph:"Localiser sur le graphe"},ede={title:"Apparence",partition:"Partition",ranking:"Classement",show_edges:"Afficher les liens",no_caption:"(pas de légende)",transformation_methods:{title:"Méthodes de transformation",linear:"linéaire","pow-2":"puissance 2","pow-3":"puissance 3",sqrt:"racine carrée",log:"logarithme",spline:"spline"},graph:{background:{title:"Arrière-plan",color:"Couleur"}},color:{title:"Couleur",set_color_from:"Définir la couleur à partir de...",data:"Fichier de données",fixed:"Une couleur constante",source:"Nœuds sources",target:"Nœuds cibles",quanti:"en tant que nombres",quali:"en tant que chaînes de caractères",default_value:"Couleur pour {{items}} sans valeur valide",color_all_items:"Couleur pour tous les {{items}}",data_description:"Toutes les couleurs des {{items}} sont celles du fichier de données d'entrée.",source_description:"Chaque lien est coloré en fonction de son nœud source.",target_description:"Chaque lien est coloré en fonction de son nœud cible.",scale_point:"Point d'échelle",ranking_intro:"Ajoutez des points de couleur sur cette échelle"},labels:{title:"Libellés",set_labels_from:"Définir le libellé à partir de...",set_labels_size_from:"Définir la taille du libellé à partir de...",data:"Fichier de données",fixed:"Un texte constant",fixed_label:"Libellé pour chaque {{items}}",fixed_label_size:"Taille du libellé pour chaque {{items}}",none:"Pas de libellé",fixed_size:"Taille fixe",size:"Taille des {{items}}",default_value:"Libellé pour {{items}} sans valeur valide",size_coef:"Tailles des libellés (plus grand rend les libellés plus grands)",adapts_to_zoom:"Dans quelle mesure les libellés doivent-ils augmenter avec le zoom",density:"Combien de libellés doivent apparaître à tout moment",data_description:"Tous les libellés des {{items}} sont ceux du fichier de données d'entrée.",none_description:"Tous les {{items}} n'ont pas de libellé affiché."},images:{title:"Images",set_labels_from:"Définir l'image à partir de...",data:"Fichier de données",fixed:"Une URL fixe",fixed_label:"La même image pour chaque {{items}}",none:"Aucune image",default_value:"Image pour {{items}} sans valeur valide",data_description:"Toutes les images des {{items}} sont ceux du fichier de données d'entrée.",none_description:"Tous les {{items}} n'ont pas d'image affichée."},size:{title:"Taille",set_size_from:"Définir la taille à partir de...",data:"Fichier de données",fixed:"Une taille constante",default_value:"Taille pour {{items}} sans valeur valide",size_all_items:"Taille pour tous les {{items}}",data_description:"Toutes les tailles des {{items}} sont celles du fichier de données d'entrée."}},tde={title:"Filtres",description:"Ce panneau permet de filtrer le graphe en superposant des filtres.",filter:"Filtre",add_filter:"Ajouter un filtre",full_graph:"Graphe entier",using:"Utilisation",topological:"Topologie",desactivated:"Filtre désactivé, cliquez pour réactiver",no_concurrent_edit:"Un seul filtre peut être modifié à la fois. Confirmez l'édition en cours pour modifier ce filtre.",range:"plage",terms:"valeurs exactes",script:"Filtre personnalisé",activated:"Filtre activé",create_filter:"Créer un filtre",keepMissingValues:"Conserver les valeurs manquantes",inapplicable:"Filtre désactivé : une seule valeur disponible"},nde={create_nodes:"Créer un nouveau nœud",create_edges:"Créer un nouveau lien",create_nodes_success:"Le nœud a été créé avec succès.",create_edges_success:"Le lien a été créé avec succès.",update_this_nodes:"Éditer ce nœud",update_this_edges:"Éditer ce lien",update_nodes:"Éditer le nœud existant",update_edges:"Éditer le lien existant",update_nodes_success:"Le nœud a été mis à jour avec succès.",update_edges_success:"Le lien a été mis à jour avec succès.",delete_this_nodes:"Supprimer ce nœud",delete_this_edges:"Supprimer ce lien",delete_nodes_zero:"Supprimer les nœuds",delete_nodes_one:"Supprimer un nœud",delete_nodes:"Supprimer {{count}} nœuds",delete_edges_zero:"Supprimer les liens",delete_edges_one:"Supprimer un lien",delete_edges:"Supprimer {{count}} liens",confirm_delete_nodes_one:"Êtes-vous sûr de vouloir supprimer ce nœud ?",confirm_delete_nodes:"Êtes-vous sûr de vouloir supprimer {{count}} nœuds ?",confirm_delete_edges_one:"Êtes-vous sûr de vouloir supprimer ce lien ?",confirm_delete_edges:"Êtes-vous sûr de vouloir supprimer {{count}} liens ?",search_nodes:"Rechercher par libellé de nœud..."},rde={title:"Graphe",control:{zoomIn:"Zoom avant",zoomOut:"Zoom arrière",zoomReset:"Afficher tout le graphe",fullscreenEnter:"Activer le mode plein écran",fullscreenExit:"Quitter le mode plein écran"},metadata:{title:"Métadonnées","graph-title":"Titre",description:"Description",keywords:"Mots-clés",authors:"Auteurs","graph-type":"Type de graphe"},partitioning:{title:"Partitionnement",description:"Pour appliquer l'apparence ou les filtres différemment sur différents groupes de {{items}}, partitionnez votre graphe en utilisant n'importe quel attribut qualitatif des nœuds.",partition:"Partitionner les {{items}} sur",status_no_partition:"Les {{items}} ne sont pas partitionnés",status_item_preview:"Les {{items}} seront regroupés en",status_item:"Les {{items}} sont regroupés en",status_partition:"{{nbPartitions}} partitions en utilisant l'attribut '{{attribute}}'.",warning_nbMissing:"{{nbMissingValues}} {{items}} n'ont pas de valeur pour cet attribut.",missing_partition_preview:"Ils seront regroupés dans une partition 'valeur manquante'.",missing_partition:"Ils sont regroupés dans une partition 'valeur manquante'."},model:{title:"Modèle d'attributs",no_attributes:"Il n'y a pas encore d'attribut dans le modèle.",attribute:{qualitative:"Qualitatif",quantitative:"Quantitatif"},directed:"Orienté",undirected:"Non orienté",mixed:"Mixte",graph:"graph",nodes_one:"nœud",nodes_zero:"nœud",nodes:"nœuds",edges_one:"lien",edges_zero:"lien",edges:"liens","nodes-data":{id:"ID du nœud",label:"Libellé du nœud",size:"Taille du nœud",color:"Couleur du nœud",x:"Position x du nœud",y:"Position y du nœud",attributes:"Autres attributs","attribute-name":"Nom de l'attribut","attribute-value":"Valeur de l'attribut","new-attribute":"Ajouter un nouvel attribut"},"edges-data":{id:"ID du lien",source:"Nœud source du lien",target:"Nœud cible du lien",label:"Libellé du lien",color:"Couleur du lien",weight:"Poids du lien",attributes:"Autres attributs","attribute-name":"Nom de l'attribut","attribute-value":"Valeur de l'attribut","new-attribute":"Ajouter un nouvel attribut"}},open:{title:"Ouvrir un fichier de graphe",local:{title:"Ouvrir un fichier local",dragndrop_text:"Faites glisser-déposer un fichier GEXF ou GRAPHML",success:"Le fichier {{filename}} a bien été ouvert",error:"Une erreur s'est produite lors de l'ouverture du fichier. Veuillez vérifier que le fichier est valide."},remote:{title:"Ouvrir une URL","url-field":"URL d'un fichier GEXF ou GRAPHML",success:"Le fichier {{filename}} a bien été ouvert",error:"Une erreur s'est produite lors de l'ouverture du fichier. Veuillez vérifier votre connexion et vous assurer que le fichier est valide."},cloud:{title:"Ouvrir un fichier depuis {{provider}}","no-data":"Vous n'avez aucun fichier GEXF ou GRAPHML d'enregistré sur {{provider}}","file-open-external":"Ouvrir {{filename}} sur {{provider}}","select-file":"Sélectionner un fichier",success:"Le fichier {{filename}} a bien été ouvert",error:"Une erreur technique s'est produite. Veuillez vérifier votre connexion ou réessayer ultérieurement."},new:{title:"Nouveau graphe vide",message:"Les données courantes seront perdues, voulez-vous continuer ?",success:"Graphe vide"}},save:{title:"Enregistrer le graphe",cloud:{title:"Enregistrer dans {{provider}} sous...",field:{filename:"Nom du fichier",description:"Description",isPublic:"Créer un gist public"},success:"Le fichier {{filename}} a bien été enregistré",error:"Une erreur s'est produite lors de l'enregistrement de votre graphe. Veuillez vérifier votre connexion ou réessayer ultérieurement."}},export:{title:"Exporter le graphe",png:{title:"Exporter une capture d'écran en PNG",success:"L'exportation PNG de votre graphe a bien été enregistrée.",fields:{filename:"Nom du fichier",width:"Largeur (en pixels)",height:"Hauteur (en pixels)",preserve_camera:"Conserver la position actuelle de la caméra"}}},caption:{color:"Couleurs des {{itemType}}",size:"Tailles des {{itemType}}",title:"Légende",disabled:"La légende est disponible une fois que l'apparence a été définie."}},ide={title:"Statistiques",compute_one:"Calculer une métrique",compute:"Calculer les métriques",success_one:'La métrique "{{metrics}}" a été ajoutée aux données pour {{items}}.',success:'Les métriques "{{metrics}}" ont été ajoutées aux données pour {{items}}.',description:"Ce panneau permet de calculer de nouvelles attributs pour les nœuds ou les liens du graphe. Ces attributs peuvent ensuite être utilisés dans les autres panneaux, par exemple pour l'apparence ou le filtrage.",placeholder:"Sélectionner un algorithme",attributes_placeholder:"Aucun",nodes_attribute_already_exists:'Un attribut de nœud nommé "{{field}}" existe déjà. Ses valeurs seront remplacées.',edges_attribute_already_exists:'Un attribut de lien nommé "{{field}}" existe déjà. Ses valeurs seront remplacées.',nodes:{louvain:{title:"Détection de communautés Louvain",description:"Cet algorithme vise à diviser les nœuds en groupes densément connectés.",attributes:{modularityClass:"Nom de l'attribut de classe de modularité"},parameters:{getEdgeWeight:{title:"Attribut de poids de lien",description:"Un attribut de lien qui représente les poids des liens."},fastLocalMoves:{title:"Mouvements locaux rapides",description:"Indique s'il faut utiliser une optimisation bien connue basée sur une file d'attente pour traverser le graphe de manière plus efficace."},randomWalk:{title:"Marche aléatoire",description:"Indique s'il faut traverser le graphe de manière aléatoire."},resolution:{title:"Résolution",description:"Une résolution plus élevée devrait produire plus de communautés."}}},pagerank:{title:"PageRank",attributes:{pagerank:"Nom de l'attribut de PageRank"},parameters:{getEdgeWeight:{title:"Attribut de poids des liens"},alpha:{title:"Alpha"},maxIterations:{title:"Nombre maximal d'itérations"},tolerance:{title:"Tolérance"}}},betweennessCentrality:{title:"Centralité d'intermédiarité",attributes:{betweennessCentrality:"Nom de l'attribut de centralité d'intermédiarité"},parameters:{getEdgeWeight:{title:"Attribut de poids des liens"},normalize:{title:"Normaliser les résultats ?"}}},degree:{title:"Degré",attributes:{degree:"Nom de l'attribut de degré"},parameters:{getEdgeWeight:{title:"Attribut de poids des liens"},kind:{title:"Type de degré",values:{degree:"Degré",inDegree:"Degré entrant",outDegree:"Degré sortant"}}}},hits:{title:"HITS",attributes:{authorities:"Nom de l'attribut de score d'autorité",hubs:"Nom de l'attribut de score de hub"},parameters:{getEdgeWeight:{title:"Attribut de poids des liens"},maxIterations:{title:"Nombre maximal d'itérations"},normalize:{title:"Normaliser les résultats ?"},tolerance:{title:"Tolérance"}}},nodescript:{title:"Métrique personnalisée de nœud",description:"Définir une fonction qui calcule une métrique pour un nœud.",attributes:{custom:"Nom de l'attribut sur lequel stocker la métrique"}}},edges:{disparity:{title:"Disparité",attributes:{disparity:"Nom de l'attribut de disparité"},parameters:{getEdgeWeight:{title:"Attribut de poids des liens"}}},simmelianStrength:{title:"Force simmelienne",attributes:{simmelianStrength:"Nom de l'attribut de force simmelienne"}},edgescript:{title:"Métrique personnalisée de liens",description:"Définir une fonction qui calcule une métrique pour un lien.",attributes:{custom:"Nom de l'attribut sur lequel stocker la métrique"}}}},ade={title:"Spatialisation",description:"Ce panneau permet de calculer de nouvelles coordonnées pour les nœuds du graphe.",placeholder:"Sélectionner un algorithme de spatialisation",exec:{success:'La spatialisation "{{layout}}" a bien été appliquée.',started:"La spatialisation {{layout}} est en cours d'exécution",stopped:"La spatialisation {{layout}} a été arrêtée"},random:{title:"Aléatoire",description:"Positionne chaque nœud de manière aléatoire en choisissant uniformément les coordonnées dans l'intervalle [0, 1)",parameters:{scale:{title:"Échelle",description:"Échelle de la spatialisation"},center:{title:"Centre",description:"Centre de la spatialisation"}}},circular:{title:"Circulaire",description:"Dispose les nœuds en cercle",parameters:{scale:{title:"Échelle",description:"Échelle du cercle"},center:{title:"Centre",description:"Centre du cercle"}}},circlePack:{title:"CirclePack",description:"Dispose les nœuds comme un graphique en bulles, en fonction des attributs spécifiés",parameters:{scale:{title:"Échelle",description:"Échelle de la spatialisation"},groupingField:{title:"Attribut de hiérarchie",description:"Un attribut facultatif à utiliser pour regrouper les nœuds"},center:{title:"Centre",description:"Centre de la spatialisation"}}},fa2:{title:"ForceAtlas2",buttons:{autoSettings:{title:"Estimer les paramètres",description:"Génère des paramètres qui conviennent le mieux au graphe actuel"}},parameters:{adjustSizes:{title:"Tenir compte des tailles ?",description:"Les tailles des nœuds doivent-elles être prises en compte ?"},barnesHutOptimize:{title:"Optimisation de Barnes-Hut",description:"Indique s'il faut utiliser l'approximation de Barnes-Hut pour calculer la répulsion en O(n*log(n)) au lieu de O(n^2), n étant le nombre de nœuds"},barnesHutTheta:{title:"Theta de Barnes-Hut",description:"Paramètre theta de l'approximation de Barnes-Hut"},edgeWeightInfluence:{title:"Influence du poids des liens",description:"Influence des poids des liens sur la spatialisation"},gravity:{title:"Gravité",description:"Intensité de la gravité de la spatialisation"},linLogMode:{title:"Mode linLog",description:"Indique s'il faut utiliser le modèle LinLog de Noack."},outboundAttractionDistribution:{title:"Distribution de l'attraction sortante"},scalingRatio:{title:"Ratio de mise à l'échelle"},slowDown:{title:"Ralentir ?"},strongGravityMode:{title:"Mode de gravité intense ?"}}},force:{title:"Dirigée par la force",parameters:{attraction:{title:"Attraction",description:"Importance de la force d'attraction qui attire chaque paire de nœuds connectés comme des élastiques"},repulsion:{title:"Répulsion",description:"Importance de la force de répulsion qui attire chaque paire de nœuds comme des aimants"},gravity:{title:"Gravité",description:"Importance de la force de gravité qui attire tous les nœuds vers le centre"},inertia:{title:"Inertie",description:"Pourcentage du déplacement vectoriel d'un nœud qui est conservé à chaque étape. 0 signifie aucune inertie, 1 signifie aucune friction"},maxMove:{title:"Déplacement maximal",description:"Longueur maximale qu'un nœud peut parcourir à chaque étape, en pixels"}}},noverlap:{title:"Noverlap",description:"Algorithme de disposition anti-collision",parameters:{gridSize:{title:"Taille de la grille",description:"Nombre de cellules de la grille qui subdivisent horizontalement et verticalement l'espace du graphe. Cela est utilisé comme un schéma d'optimisation. Réglez-le sur 1 pour obtenir une complexité temporelle O(n²), qui peut parfois être plus performante avec très peu de nœuds."},margin:{title:"Marge",description:"Marge à conserver entre les nœuds"},expansion:{title:"Expansion",description:"Pourcentage de l'espace actuel que les nœuds peuvent tenter de dépasser"},ratio:{title:"Ratio",description:"Mise à l'échelle du ratio des tailles des nœuds"},speed:{title:"Vitesse",description:"Facteur d'amortissement qui ralentit les mouvements des nœuds pour faciliter l'ensemble du processus"}}},script:{title:"Spatialisation personnalisée",description:"Écrivez votre propre spatialisation en créant une fonction qui renvoie un objet {x, y} pour chaque nœud",parameters:{}}},ode={title:"Gestion des données",login_capabilities:"Vous pouvez vous connecter à GitHub depuis Gephi Lite pour enregistrer et charger des fichiers de graphe directement en tant que gists GitHub :"},sde={add:"Ajouter",all:"Tous",apply:"Appliquer",cancel:"Annuler",clear:"Effacer",close:"Fermer",collapse:"Réduire",confirm:"Confirmer",copy:"Copier",created:"Créé",delete:"Supprimer",edit:"Modifier",expand:"Agrandir",filename:"Nom du fichier",hide:"Masquer","load-more":"Charger plus",loading:"Chargement",min:"Min",max:"Max",none:"Aucun",open:"Ouvrir",open_file:"Ouvrir {{filename}}",open_code_editor:"Ouvrir l'éditeur de code",remove:"Supprimer",reset:"Réinitialiser",save:"Enregistrer","save-and-run":"Enregistrer et exécuter",select:"Sélectionner...",start:"Démarrer",stop:"Arrêter",size:"Taille",show:"Afficher",show_more:"Afficher plus",show_less:"Afficher moins",submit:"Soumettre",updated:"Mis à jour"},lde={github:{title:"GitHub",auth:{title:"Authentification GitHub",asking_for_device_code:"Demande d'un code d'appareil à GitHub",copy_code:`Copiez le code ci-dessous et cliquez sur le bouton "Ouvrir GitHub". Une nouvelle fenêtre s'ouvrira, sur laquelle GitHub vous demandera le code.`,copy_success:"Code enregistré dans le presse-papiers",waiting_validation:"En attente de validation"}}},cde={graph:{placeholder:"Rechercher des nœuds, des liens...",no_result:"Aucun résultat",help:"Saisissez quelque chose pour rechercher",other_result:"... et {{count}} autres résultats",select_all_nodes:"Ajouter {{count}} nœuds à la sélection",select_all_edges:"Ajouter {{count}} liens à la sélection"},nodes:{placeholder:"Rechercher un nœud...",no_result:"Aucun nœud trouvé",help:"Écrire quelque chose pour trouver un nœud",other_result:"... et {{count}} autres nœuds"},edges:{placeholder:"Rechercher un lien...",no_result:"Aucun lien trouvée",help:"Écrire quelque chose pour trouver un lien",other_result:"... et {{count}} autres liens"}},ude={title:"User's settings","danger-zone":{title:"Danger zone","reset-state":{title:"Mise à zéro de l'état de l'application",description:"Toutes les données courantes seront perdues, même celle stockée dans le navigateur. Voulez-vous continuer ?",success:"Mise à zéro de l'application"}}},dde={welcome:Vue,"gephi-lite":{title:"Gephi Lite",info:"Plus d'informations sur Gephi Lite"},error:que,user:Yue,menu:jue,providers:Wue,github:Kue,auth:Que,storage:Xue,context:Zue,selection:Jue,appearance:ede,filters:tde,edition:nde,graph:rde,statistics:ide,layouts:ade,file:ode,common:sde,cloud:lde,search:cde,settings:ude},fde={no_recent:"Ebben a böngészőben még nem nyitottak meg távoli fájlt.",logo:"Gephi logó",title:"Üdvözöljük a Gephi Lite-ban",open_graph:"Nyissa meg a grafikonfájlt","disclaimer-2":"Nyugodtan tekintse meg a GitHub projektet, ha többet szeretne megtudni a lehetséges funkciókról, vagy bejelentheti a hibákat.",open_recent:"Nyissa meg a legutóbbi lehetőséget","disclaimer-1":"A Gephi Lite jelenleg dolgozik.",samples:"Minták"},pde={open:{cloud:"Grafikon megnyitása a következő: {{provider}}",remote:"Távoli grafikon megnyitása",local:"Nyissa meg a helyi grafikont"},download:{gexf:"Mentse el a grafikont helyileg","gexf-error":"Hiba történt a GEXF fájl generálásakor"},save:{default:"Mentés",cloud:"Mentés itt: {{provider}} mint..."}},gde={circular:{title:"Kör alakú",description:"A csomópontot körbe rendezi",parameters:{center:{title:"Középpont",description:"Az elrendezés középpontja"},scale:{title:"Skála",description:"Az elrendezés léptéke"}}},circlePack:{parameters:{groupingField:{description:"Nem kötelező attribútum a csomópontok csoportosításához",title:"Hierarchia attribútum"},scale:{description:"Az elrendezés léptéke",title:"Skála"},center:{title:"Középpont",description:"Az elrendezés középpontja"}},description:"Buborékdiagramként rendezi el a csomópontokat a megadott attribútumoknak megfelelően",title:"Körcsomag"},title:"Elrendezés",random:{title:"Véletlen",parameters:{scale:{title:"Skála",description:"Az elrendezés léptéke"},center:{description:"Az elrendezés középpontja",title:"Központi"}},description:"Véletlenszerű elrendezés minden csomópont pozicionálása az egyes koordináták egyenletes, véletlenszerű kiválasztásával az intervallum [0, 1)"},placeholder:"Válasszon elrendezési algoritmust",fa2:{title:"ForceAtlas2",parameters:{adjustSizes:{description:"Figyelembe kell venni a csomópontok méretét?",title:"Méretek beállítása?"},linLogMode:{title:"linLog mód",description:"Használja-e a Noack LinLog modelljét."},gravity:{description:"Az elrendezés gravitációjának erőssége",title:"Gravitáció"},outboundAttractionDistribution:{title:"Kifelé kötött vonzás eloszlása"},strongGravityMode:{title:"Erős gravitációs mód?"},edgeWeightInfluence:{title:"A szélek súlyának hatása",description:"Az él súlyának hatása az elrendezésre"},scalingRatio:{title:"Méretezési arány"},slowDown:{title:"Lassú letöltés?"},barnesHutTheta:{title:"barnesHutTheta",description:"Barnes-Hut közelítő théta paraméter"},barnesHutOptimize:{description:"Hogy a Barnes-Hut közelítést használja-e a taszítás kiszámításához O(n*log(n)) értékben az alapértelmezett O(n^2) helyett, ahol n a csomópontok száma",title:"barnesHutOptimize"}},buttons:{autoSettings:{title:"Találd meg a beállításokat",description:"Olyan beállításokat állít elő, amelyek a legjobban illeszkednek az aktuális grafikonhoz"}}},description:"Ez a panel lehetővé teszi új koordináták kiszámítását a grafikon csomópontjaihoz. ",force:{title:"Kényszer irányított",parameters:{inertia:{title:"Tehetetlenség",description:"Az egyes lépésekben megőrzött csomópontvektor-eltolódás százalékos aránya. A 0 azt jelenti, hogy nincs tehetetlenség, az 1 azt jelenti, hogy nincs súrlódás"},attraction:{title:"Vonzerő",description:"A vonzási erő fontossága, amely minden egyes összekapcsolt csomópontpárt rugalmasként vonz"},repulsion:{description:"A taszító erő jelentősége, amely mágnesként vonzza az egyes csomópontokat",title:"Taszítás"},gravity:{title:"Gravitáció",description:"A gravitációs erő jelentősége, amely minden csomópontot a központba vonz"},maxMove:{title:"Maximális mozgás",description:"Maximális hossza, amelyet egy csomópont minden lépésnél megtehet, pixelben"}}},script:{title:"Egyedi elrendezés",description:"Írja meg saját elrendezését egy olyan függvény létrehozásával, amely minden csomóponthoz egy {x,y} objektumot ad vissza"},noverlap:{parameters:{speed:{title:"Sebesség",description:"Csillapító tényező, amely lelassítja a csomópontok mozgását, hogy megkönnyítse az általános folyamatot"},expansion:{description:"Az aktuális tér azon százaléka, amelyen a csomópontok megpróbálhatnak kimozdulni",title:"Terjeszkedés"},gridSize:{description:"A grafikon terét vízszintesen és függőlegesen felosztó rácscellák száma. Ezt optimalizálási sémaként használják. Állítsa 1-re, és O(n²) időbonyolultságú lesz, ami néha nagyon kevés csomóponttal jobban teljesít.",title:"Rács mérete"},margin:{description:"A csomópontok között megtartandó margó",title:"Margó"},ratio:{title:"Hányados",description:"A csomópontok méretaránya"}},title:"Átfedés",description:"Ütközésgátló elrendezési algoritmus"},exec:{success:'Az elrendezés"{{layout}}" alkalmazása sikeresen megtörtént.',stopped:"Az elrendezés {{layout}} leállt",started:"Az elrendezés {{layout}} fut"}},mde={topological:"Topológia",add_filter:"Szűrő hozzáadása",activated:"Aktivált szűrő",no_concurrent_edit:"Egyszerre csak egy szűrő szerkeszthető. A szűrő szerkesztéséhez erősítse meg az aktuális szűrőt.",full_graph:"Teljes grafikon",desactivated:"Deaktivált szűrő, kattintson az újraaktiváláshoz",script:"Egyedi szűrő",terms:"pontos értékek",description:"Ez a panel lehetővé teszi a grafikon szűrését szűrők halmozásával.",using:"Használat",filter:"Szűrő",inapplicable:"Szűrő letiltva: csak egy érték áll rendelkezésre",create_filter:"Szűrő létrehozása",keepMissingValues:"Tartsa meg a hiányzó értékeket",title:"Szűrők",range:"tartomány"},hde={edges:{simmelianStrength:{title:"Szimmeli erő",attributes:{simmelianStrength:"Simmelian erősség attribútum neve"}},edgescript:{description:"Határozzon meg egy függvényt, amely egy él metrikáját számítja ki.",attributes:{custom:"Attribútumnév, amelyen tárolni kívánja a metrikát"},title:"Egyéni élmutató"},disparity:{parameters:{getEdgeWeight:{title:"Élsúly attribútum"}},title:"Különbség",attributes:{disparity:"Disparity attribútum neve"}}},nodes:{nodescript:{title:"Egyéni csomóponti mérőszám",attributes:{custom:"Attribútumnév, amelyen tárolni kívánja a metrikát"},description:"Határozzon meg egy függvényt, amely egy csomópont metrikáját számítja ki."},hits:{parameters:{tolerance:{title:"Megfelelő"},maxIterations:{title:"Max. iterációk"},getEdgeWeight:{title:"Élsúly attribútum"},normalize:{title:"Normalizálja a kimenetet?"}},attributes:{hubs:"Hub pontszám attribútum neve",authorities:"Authority score attribútum neve"},title:"LÁTÁSOK"},degree:{parameters:{kind:{title:"A kimenet típusa",values:{degree:"Fokozat",inDegree:"Bejövő fokozat",outDegree:"Kimenő fokozat"}},getEdgeWeight:{title:"Élsúly attribútum"}},attributes:{degree:"Fokozat attribútum neve"},title:"Fokozat"},pagerank:{parameters:{maxIterations:{title:"Max. iterációk"},tolerance:{title:"Megértés"},getEdgeWeight:{title:"Élsúly attribútum"},alpha:{title:"Alpha"}},title:"PageRank",attributes:{pagerank:"PageRank attribútum neve"}},betweennessCentrality:{parameters:{getEdgeWeight:{title:"Élsúly attribútum"},normalize:{title:"Normalizálja a kimenetet?"}},attributes:{betweennessCentrality:"Közötti központiság attribútum neve"},title:"Közötti központiság"},louvain:{description:"Ennek az algoritmusnak az a célja, hogy a csomópontokat sűrűn összefüggő csoportokká bontsa fel.",parameters:{getEdgeWeight:{description:"Egy élattribútum, amely élsúlyokat jelentene.",title:"Élsúly attribútum"},resolution:{description:"A nagyobb felbontásnak több közösséget kell létrehoznia.",title:"Felbontás"},fastLocalMoves:{title:"Gyors helyi mozgás",description:"Hogy használjunk-e egy jól ismert optimalizálást, amely egy sorkészletre támaszkodik a grafikon hatékonyabb bejárása érdekében."},randomWalk:{description:"A grafikon véletlenszerű bejárása.",title:"Véletlenszerű járat"}},title:"Louvain közösség észlelése",attributes:{modularityClass:"Modularitás osztály attribútum neve"}}},edges_attribute_already_exists:'A "{{field}}" nevű élattribútum már létezik. Értékei felülíródnak.',success:'A(z) {{items}} "{{metrics}}" mérőszám hozzáadásra került az adatokhoz.',nodes_attribute_already_exists:'A "{{field}}" nevű csomópont-attribútum már létezik. Értékei felülíródnak.',compute:"Számítsa ki a mérőszámokat",compute_one:"Számítsa ki a mérőszámot",placeholder:"Válasszon ki egy algoritmust",attributes_placeholder:"Egyik sem",success_one:'A(z) {{items}} "{{metrics}}" mutató hozzáadva az adatokhoz.',description:"Ez a panel lehetővé teszi új attribútumok kiszámítását a gráf csomópontjaihoz vagy éleihez. Ezek az attribútumok később felhasználhatók a többi panelen, például megjelenéshez vagy szűréshez.",title:"Statisztika"},_de={update_this_edges:"Szerkessze ezt az élt",delete_edges_one:"Egy él törlése",update_edges:"Meglévő él szerkesztése",update_nodes:"Meglévő csomópont szerkesztése",create_nodes_success:"A csomópont sikeresen létrejött.",delete_nodes_one:"Töröljön egy csomópontot",delete_nodes_zero:"Csomópontok törlése",delete_this_edges:"Törölje ezt az élt",update_edges_success:"Az él frissítése sikeresen megtörtént.",update_this_nodes:"Szerkessze ezt a csomópontot",delete_this_nodes:"Törölje ezt a csomópontot",delete_edges_zero:"Élek törlése",update_nodes_success:"A csomópont frissítése sikeresen megtörtént.",create_nodes:"Új csomópont létrehozása",create_edges_success:"Az él sikeresen létrejött.",create_edges:"Új él létrehozása",search_nodes:"Keresés a csomópontcímkék között...",confirm_delete_nodes_one:"Biztosan törli ezt az egy csomópontot?",confirm_delete_edges:"Biztosan törölni szeretne {{count}} élt?",confirm_delete_nodes:"Biztosan törölni szeretne {{count}} csomópontot?",delete_edges:"{{count}} él törlése",delete_nodes:"Töröljön {{count}} csomópontot",confirm_delete_edges_one:"Biztosan törli ezt az egy élt?"},vde={sign_in:"Jelentkezzen be a GitHubba",unauth_success:"Az azonosítás sikeres volt",sign_out:"Jelentkezzen ki a GitHubból"},Ede={color:{source:"Forrás csomópontok",quali:"mint húrok",set_color_from:"Szín beállítása innen:...",quanti:"mint számok",scale_point:"Skálapont",title:"Szín",source_description:"Minden él forrásként színezett.",target:"Célcsomópontok",data:"Bemeneti fájl",fixed:"Állandó szín",target_description:"Minden él célpontként színezett.",ranking_intro:"Adjon hozzá színpontokat ezen a skálán",data_description:"Az összes {{items}} szín olyan, mint a bemeneti adatfájlban.",color_all_items:"Minden {{items}} szín",default_value:"A(z) {{items}} színe érvényes érték nélkül"},labels:{density:"Hány címke jelenjen meg bármikor",none:"Nincs cimke",set_labels_from:"Címke beállítása innen...",fixed:"Állandó szöveg",set_labels_size_from:"Címkeméretek beállítása innen...",adapts_to_zoom:"Mennyire nőjenek a címkék a nagyítással",fixed_size:"Fix méret",title:"Címkék",data:"Beviteli adat",size_coef:"Címkeméretek (a nagyobb címkék nagyobbnak tűnnek)",data_description:"Az összes {{items}} címke olyan, mint a bemeneti adatfájlban.",fixed_label_size:"Címkeméret minden {{items}} esetben",none_description:"Az összes {{items}} elemnek nincs megjelenített címkéje.",fixed_label:"Minden cimke {{items}}",default_value:"A {{items}} címke érvényes érték nélkül",size:"{{items}} méret"},show_edges:"Élek megjelenítése",transformation_methods:{title:"Átalakítási módszerek",linear:"lineáris",sqrt:"sqrt","pow-2":"pow 2",log:"log",spline:"spline","pow-3":"pow 3"},ranking:"Rangsorolás",size:{title:"Méret",fixed:"Állandó méretű",data:"Bemeneti fájl",set_size_from:"Méret beállítása innen:...",default_value:"{{items}} mérete érvényes érték nélkül",size_all_items:"Méret az összes {{items}} számára",data_description:"Minden {{items}} méret megegyezik a bemeneti adatfájlban."},no_caption:"(nincs felirat)",title:"Kinézet",partition:"Partíció"},bde={unselect_all_hidden_nodes:"Törölje az összes rejtett él kijelölését",hidden_edges_one:"Egy rejtett kiválasztott él",unselect_edges:"Törölje ennek az élnek a kijelölését",unselect_all:"Minden kijelölés megszüntetése",nodes_one:"Egy kiválasztott csomópont",focus_edges:"Csak ezt az élt válassza ki",edges_zero:"Nincs kiválasztott él",hidden_nodes_one:"Egy rejtett kiválasztott csomópont",select_all:"Mindet kiválaszt",visible_edges_one:"Egy látható kiválasztott él",node_no_label:"(Üres címke)",locate_on_graph:"Keresse meg a grafikonon",visible_nodes_zero:"Nincs látható kiválasztott csomópont",edge_no_label:"(Üres címke)",unselect_nodes:"Törölje a csomópont kijelölését",visible_edges_zero:"Nincs látható kiválasztott él",focus_nodes:"Csak ezt a csomópontot válassza ki",empty_nodes:"Ennek a csomópontnak nincs attribútuma",edges_one:"Egy kiválasztott él",visible_nodes_one:"Egy látható kiválasztott csomópont",empty_edges:"Ennek az élnek nincs attribútuma",nodes_zero:"Nincs kiválasztott csomópont",unselect_all_hidden_edges:"Törölje az összes rejtett él kijelölését",visible_edges:"{{count}} látható kijelölt él",edges:"{{count}} kiválasztott él",visible_nodes:"{{count}} látható kiválasztott csomópont",nodes:"{{count}} kiválasztott csomópont",hidden_edges:"{{count}} rejtett kijelölt él",hidden_nodes:"{{count}} rejtett kiválasztott csomópont"},Sde={not_found:{paragraph:"Lehet, hogy rosszul írta be a címet, vagy az oldal elköltözött.",subtitle:"A keresett oldal nem létezik.",title:"Az oldal nem található"},unknown:"Ismeretlen hiba lépett fel.",title:"Hiba"},yde={title:"Adatok áttekintése"},Tde={github:"GitHub"},Cde={select_ui_language:"Válassza ki az alkalmazás nyelvét",title:"GitHub hitelesítés",logged_as:"Jelenleg {{username}} néven van bejelentkezve a GitHubba.",description:"A GitHubba bejelentkezhet a Gephi Lite alkalmazásból, hogy közvetlenül GitHub Gists néven mentse és töltse be a grafikonfájlokat."},Rde={cannot_restore:"A grafikonját nem lehet visszaállítani.",restore_successful:"Munkadiagramja visszaállításra került."},Nde={avatar_alt:"{{name}} avatarja"},Ade={nodes:{help:"Írjon be valamit a csomópont kereséséhez",other_result:"... és {{count}} másik csomópont",placeholder:"Csomópont keresése...",no_result:"Nem található csomópont"},edges:{help:"Írjon be valamit, hogy megtalálja az élt",placeholder:"Keress egy élt...",no_result:"Nem található él",other_result:"... és {{count}} másik él"},graph:{no_result:"Nincs eredmény",select_all_nodes:"Adjon hozzá {{count}} csomópontot a kijelöléshez",help:"Írjon be valamit a kereséshez",other_result:"... és további {{count}} találat",select_all_edges:"Adjon hozzá {{count}} élt a kijelöléshez",placeholder:"Csomópontok, élek keresése..."}},wde={hide:"Rejtett",start:"Rajt",edit:"Szerkeszt",show_more:"Mutass többet",updated:"Frissítve",save:"Mentés",collapse:"Összeomlás",add:"Hozzáadás",created:"Létrehoz",all:"Minden","load-more":"Töltsön be többet","save-and-run":"Mentse el és futtassa",max:"Maximum",open_code_editor:"Nyissa meg a kódszerkesztőt",clear:"Egyértelmű",stop:"Állj meg",delete:"Töröl",cancel:"Megszünteti",show:"Mutasd meg",copy:"Másolat",confirm:"Megerősít",select:"Válogatás...",reset:"Visszaállítás",open:"Kinyit",open_file:"Nyissa ki {{filename}}",show_less:"Mutass kevesebbet",none:"Egyik sem",filename:"Fájl neve",expand:"Kiterjesztett",apply:"Alkalmaz",submit:"Beküldés",loading:"Betölt",remove:"Távolítsa el",size:"Méret",close:"Bezárás",min:"Min"},Ode={github:{auth:{copy_success:"A kód a vágólapra mentve",asking_for_device_code:"Eszközkód kérése a Githubtól",title:"GitHub hitelesítés",waiting_validation:"Érvényesítésre vár",copy_code:'Másolja ki az alábbi kódot, és kattintson az "Open GitHub" gombra. Megnyílik egy új lap, amelyen a GitHub megkérdezi a kódot'},title:"GitHub"}},xde={title:"Adatkezelés",login_capabilities:"A GitHubba bejelentkezhet a Gephi Lite alkalmazásból, hogy közvetlenül GitHub Gistsként mentse és töltse be a grafikonfájlokat:"},Dde={export:{png:{fields:{height:"Magasság (pixelben)",width:"Szélesség (pixelben)",preserve_camera:"A kamera jelenlegi pozíciójának megőrzése",filename:"Fájl neve"},title:"PNG-pillanatkép exportálása",success:"A grafikon PNG-exportálása sikeresen elmentve."},title:"Grafikon exportálása"},save:{cloud:{field:{description:"Leírás",filename:"Fájl neve",isPublic:"Hozzon létre egy nyilvános tartalmat"},title:"Mentés a(z) {{provider}} szolgáltatásba másként...",error:"Hiba történt a diagram mentése közben. Kérjük, ellenőrizze a kapcsolatot, vagy próbálkozzon később.",success:"A(z) {{filename}} fájl sikeresen elmentve"},title:"Grafikon mentése"},model:{"edges-data":{"new-attribute":"Új attribútum hozzáadása",attributes:"Egyéb attribútumok",source:"Él forrása",target:"Élcélpont",color:"Él színe","attribute-name":"Attribútum neve",label:"Élcímke",id:"Él ID",weight:"Él súlya","attribute-value":"Attribútum értéke"},"nodes-data":{attributes:"Egyéb attribútumok","new-attribute":"Új attribútum hozzáadása",color:"Csomópont színe","attribute-name":"Attribútum neve",label:"Csomópont címke","attribute-value":"Attribútum értéke",size:"Csomópont mérete",id:"csomópont azonosítója",x:"Csomópont x pozició",y:"Csomópont y pozició"},nodes_zero:"csomópont",undirected:"Irányítatlan",attribute:{quantitative:"Mennyiség",qualitative:"Minőségi"},edges_one:"él",mixed:"Vegyes",nodes:"csomópontok",edges_zero:"él",nodes_one:"csomópont",no_attributes:"A modellben még nincs attribútum.",directed:"Irányított",title:"Attribútumok modellje",edges:"élek"},partitioning:{status_no_partition:"A(z) {{items}} nincs particionálva",partition:"Partíció {{items}} bekapcsolva",status_partition:"{{nbPartitions}} partíció a '{{attribute}}' attribútum használatával.",title:"Partícionálás",warning_nbMissing:"Az {{nbMissingValues}} {{items}} nem rendelkezik értékkel ehhez az attribútumhoz.",description:"Ha eltérően szeretné alkalmazni a megjelenést vagy a szűrőket az {{items}} különböző csoportjaira, particionálja a grafikont bármely csomóponti minőségi attribútum használatával.",missing_partition:"Ezek egy „hiányzó érték” partícióba vannak csoportosítva.",status_item:"A(z) {{items}} csoportba vannak csoportosítva",status_item_preview:"A(z) {{items}} csoportba kerül",missing_partition_preview:"Ezek egy „hiányzó érték” partícióba lesznek csoportosítva."},caption:{title:"Felirat",disabled:"A felirat a megjelenés beállítása után érhető el.",color:"Szín: {{itemType}}",size:"Méret: {{itemType}}"},metadata:{keywords:"Kulcsszavak",title:"adat az adatról",authors:"Szerző",description:"Leírás","graph-title":"Cím","graph-type":"Grafikon típusa"},control:{zoomIn:"Nagyítás",fullscreenExit:"Lépjen ki a teljes képernyőből",zoomReset:"Lásd a teljes grafikont",zoomOut:"Kicsinyítés",fullscreenEnter:"Lépjen be a teljes képernyős módba"},open:{local:{title:"Nyisson meg egy helyi fájlt",error:"Hiba történt a fájl megnyitásakor. Kérjük, ellenőrizze, hogy a fájl érvényes GEXF-e.",dragndrop_text:"Fogd és vidd egy GEXF fájlt",success:"A(z) {{filename}} fájl sikeresen betöltve"},cloud:{title:"Nyisson meg egy fájlt a következőtől {{provider}}",error:"Technikai hiba történt. Kérjük, ellenőrizze a kapcsolatot, vagy próbálkozzon később.","select-file":"Válasszon ki egy fájlt","no-data":"Nincs mentve GEXF-fájl a(z) {{provider}} webhelyen","file-open-external":"Nyissa meg a(z) {{filename}} fájlt a(z) {{provider}} webhelyen",success:"A(z) {{filename}} fájl sikeresen betöltve"},title:"Nyisson meg egy grafikonfájlt",remote:{title:"Nyisson meg egy URL-t",error:"Hiba történt a fájl megnyitásakor. Kérjük, ellenőrizze a csatlakozást, és hogy a fájl érvényes GEXF-e.",success:"A(z) {{filename}} fájl sikeresen betöltve","url-field":"A GEXF fájl URL-je"}},title:"Grafikon"},Ide={welcome:fde,menu:pde,layouts:gde,filters:mde,statistics:hde,edition:_de,auth:vde,appearance:Ede,selection:bde,error:Sde,context:yde,providers:Tde,github:Cde,storage:Rde,"gephi-lite":{title:"Gephi Lite",info:"További információ a Gephi Lite-ról"},user:Nde,search:Ade,common:wde,cloud:Ode,file:xde,graph:Dde},Mde={export:{png:{fields:{height:"높이 (픽셀 수)",width:"폭 (픽셀 수)",preserve_camera:"현재 카메라 위치 유치",filename:"파일 이름"},title:"PNG 스냅샷 내보내기",success:"그래프 PNG 내보내기가 성공적으로 저장되었습니다."},title:"그래프 내보내기"},save:{cloud:{field:{description:"설명",filename:"파일 이름",isPublic:"공개 요지 생성"},title:"{{provider}}에 다음으로 저장...",error:"그래프를 저장하는 동안 오류가 발생했습니다. 연결을 확인하거나 나중에 시도하세요.",success:"{{filename}} 파일이 성공적으로 저장되었습니다"},title:"그래프 저장"},model:{"edges-data":{"new-attribute":"새 속성 추가",attributes:"기타 속성",source:"엣지 시작점",target:"엣지 도착점",color:"엣지 색상","attribute-name":"속성 이름",label:"엣지 라벨",id:"엣지 ID",weight:"엣지 가중치","attribute-value":"속성 값"},"nodes-data":{attributes:"기타 속성","new-attribute":"새 속성 추가",color:"노드 색상","attribute-name":"속성 이름",label:"노드 라벨","attribute-value":"속성 값",size:"노드 크기",id:"노드 ID",x:"노드 x 위치",y:"노드 y 위치"},nodes_zero:"노드",undirected:"비방향성",attribute:{quantitative:"정량적",qualitative:"정성적"},edges_one:"엣지",mixed:"혼합적",nodes:"노드",edges_zero:"엣지",nodes_one:"노드",no_attributes:"모델에 아직 속성이 없습니다.",directed:"방향성",title:"속성의 모델",edges:"엣지"},partitioning:{status_no_partition:"{{items}}가 분할되지 않았습니다",partition:"{{items}}를 분할",status_partition:"'{{attribute}}' 속성을 사용하는 {{nbPartitions}} 파티션.",title:"파티션",warning_nbMissing:"{{nbMissingValues}} {{items}}가 해당 속성에 대한 값을 가지고 있지 않습니다.",description:"{{items}}의 다른 그룹에 모양이나 필터를 다르게 적용하려면 노드 질적 속성을 사용하여 그래프를 분할하세요.",missing_partition:"그들은 '누락된 값'이라는 파티션으로 그룹화됩니다.",status_item:"{{items}}가 다음으로 그룹화됩니다",status_item_preview:"{{items}}가 다음으로 그룹화됩니다",missing_partition_preview:"그들은 '누락된 값'이라는 파티션으로 그룹화됩니다."},caption:{title:"캡션",disabled:"모양이 설정되면 캡션을 사용할 수 있습니다.",color:"{{itemType}}을 색칠",size:"{{itemType}}의 크기 지정"},metadata:{keywords:"키워드",title:"메타데이터",authors:"저자",description:"설명","graph-title":"제목","graph-type":"그래프 유형"},control:{zoomIn:"확대",fullscreenExit:"전체 화면 모드 해제",zoomReset:"전체 그래프 보기",zoomOut:"축소",fullscreenEnter:"전체 화면 모드"},open:{local:{title:"로컬 파일 열기",error:"파일을 읽는 동안 오류가 발생했습니다. 유효한 GEXF 파일인지 확인하세요.",dragndrop_text:"GEXF 파일을 끌어다 놓기",success:"{{filename}} 파일이 성공적으로 로드되었습니다"},cloud:{title:"{{provider}}에서 파일 열기",error:"기술적 오류가 발생했습니다. 연결을 확인하거나 나중에 시도하세요.","select-file":"파일 선택","no-data":"{{provider}}로 저장된 GEXF 파일이 없습니다","file-open-external":"{{provider}}에서 {{filename}} 파일 열기",success:"{{filename}} 파일이 성공적으로 로드되었습니다"},title:"그래프 파일 열기",remote:{title:"URL 열기",error:"파일을 읽는 동안 오류가 발생했습니다. 연결 여부 및 유효한 GEXF 파일인지 확인하세요.",success:"{{filename}} 파일이 성공적으로 로드되었습니다","url-field":"GEXF 파일의 URL"}},title:"그래프"},Lde={search_nodes:"노드 라벨 검색...",update_this_edges:"엣지 수정",delete_edges_one:"엣지 하나 삭제",update_edges:"기존 엣지 편집",update_nodes:"기존 노드 편집",create_nodes_success:"노드가 성공적으로 생성됐습니다.",confirm_delete_nodes_one:"이 노드 하나를 삭제하시겠습니까?",delete_nodes_one:"노드 하나 삭제",delete_nodes_zero:"노드 삭제",delete_this_edges:"엣지 삭제",update_edges_success:"엣지가 성공적으로 업데이트됐습니다.",confirm_delete_edges:"{{count}} 개 엣지를 삭제하시겠습니까?",update_this_nodes:"노드 수정",delete_this_nodes:"노드 삭제",delete_edges_zero:"엣지 삭제",update_nodes_success:"노드가 성공적으로 업데이트됐습니다.",confirm_delete_nodes:"{{count}} 개 노드를 삭제하시겠습니까?",delete_edges:"{{count}} 개 엣지 삭제",delete_nodes:"{{count}} 개 노드 삭제",create_nodes:"새 노드 생성",create_edges_success:"엣지가 성공적으로 생성됐습니다.",create_edges:"새 엣지 생성",confirm_delete_edges_one:"이 노드 하나를 삭제하시겠습니까?"},kde={no_recent:"해당 브라우저에서 아직 원격 파일이 열리지 않았습니다.",logo:"Gephi 로고",title:"Gephi Lite에 오신 것을 환영합니다",open_graph:"그래프 파일 열기","disclaimer-2":"향후의 기능을 알아 보거나 버그를 보고하려면 GitHub 프로젝트를 확인하세요.",open_recent:"최근 열기","disclaimer-1":"Gephi Lite는 현재 진행 중인 작업입니다.",samples:"예제"},Pde={nodes:{louvain:{description:"이 알고리즘은 노드들을 조밀하게 연결된 그룹으로 분리하는 것을 목표로 합니다.",parameters:{getEdgeWeight:{description:"엣지의 가중치를 표현하는 속성.",title:"엣지 가중치 속성"},resolution:{description:"해상도가 올라가면 더 많은 커뮤니티를 생성합니다.",title:"그룹화 해상도"},fastLocalMoves:{title:"빠른 로컬 이동",description:"그래프를 보다 효율적으로 탐색하기 위해 대기열 세트에 의존하는 잘 알려진 최적화를 사용할지 여부."},randomWalk:{description:"그래프를 무작위로 탐색할지 여부.",title:"무작위 이동"}},title:"Louvain 커뮤니티 탐지",attributes:{modularityClass:"모듈성 클래스 속성 이름"}},nodescript:{title:"커스텀 노드 메트릭",attributes:{custom:"메트릭을 저장할 속성 이름"},description:"노드의 메트릭을 계산하는 함수를 정의합니다."},hits:{parameters:{tolerance:{title:"수렴 허용도"},maxIterations:{title:"최대 반복"},getEdgeWeight:{title:"엣지 가중치 속성"},normalize:{title:"출력 정규화 할까요?"}},attributes:{authorities:"신뢰도 점수 속성 이름",hubs:"허브 점수 속성 이름"},title:"HITS(하이퍼링크 기반 주제 검색)"},degree:{parameters:{kind:{title:"차수 유형",values:{inDegree:"진입 차수",outDegree:"진출 차수",degree:"차수"}},getEdgeWeight:{title:"엣지 가중치 속성"}},attributes:{degree:"차수 속성 이름"},title:"차수"},pagerank:{title:"PageRank",parameters:{getEdgeWeight:{title:"엣지 가중치 속성"},maxIterations:{title:"최대 반복"},alpha:{title:"알파"},tolerance:{title:"수렴 허용도"}},attributes:{pagerank:"PageRank 속성 이름"}},betweennessCentrality:{parameters:{getEdgeWeight:{title:"엣지 가중치 속성"},normalize:{title:"출력 정규화 할까요?"}},title:"매개 중심성",attributes:{betweennessCentrality:"매개 중심성 속성 이름"}}},edges:{simmelianStrength:{title:"Simmelian 강도",attributes:{simmelianStrength:"Simmelian 강도 속성 이름"}},edgescript:{description:"엣지의 메트릭을 계산하는 함수를 정의합니다.",attributes:{custom:"메트릭을 저장할 속성 이름"},title:"커스텀 엣지 메트릭"},disparity:{parameters:{getEdgeWeight:{title:"엣지 가중치 속성"}},title:"불균형도",attributes:{disparity:"불균형도 속성 이름"}}},edges_attribute_already_exists:'"{{field}}"라는 이름의 엣지 속성이 이미 존재합니다. 새로운 값으로 덮어씌워집니다.',success:'{{items}}의 "{{metrics}}" 메트릭이 데이터에 추가되었습니다.',nodes_attribute_already_exists:'"{{field}}"라는 이름의 노드 속성이 이미 존재합니다. 새로운 값으로 덮어씌워집니다.',compute:"메트릭 계산",compute_one:"메트릭 계산",placeholder:"알고리즘 선택",attributes_placeholder:"없음",success_one:'{{items}}의 "{{metrics}}" 메트릭이 데이터에 추가되었습니다.',description:"이 패널에서 그래프의 노드나 엣지에 대한 새 속성을 계산할 수 있습니다. 이들 속성은 다른 패널에서, 예를 들어 모양이나 필터링을 위해 사용될 수 있습니다.",title:"통계"},Fde={open:{cloud:"{{provider}}에서 그래프 열기",remote:"원격 그래프 열기",local:"로컬 그래프 열기"},save:{cloud:"{{provider}}를 다음 이름으로 저장...",default:"저장"},download:{gexf:"그래프를 로컬에 저장","gexf-error":"GEXF 파일을 생성하는 중 오류 발생"}},Ude={color:{data_description:"모든 {{items}} 색상은 입력 데이터 파일과 동일합니다.",source:"소스 노드",quali:"문자열로",set_color_from:"색상 지정...",color_all_items:"모든 {{items}} 색상",quanti:"숫자로",scale_point:"스케일 점",title:"색상",source_description:"각 엣지는 자신의 소스와 같은 색상으로 표시됩니다.",target:"타겟 노드",data:"입력 파일",fixed:"일정한 색상",target_description:"각 엣지는 자신의 타겟과 같은 색상으로 표시됩니다.",default_value:"유효한 값이 없는 {{items}} 색상",ranking_intro:"스케일에 색상 점 추가"},labels:{density:"얼마나 많은 라벨이 표시되어야 하는지",size_coef:"라벨 크기 (높은 값이 크게 표시됨)",data_description:"{{items}} 모든 라벨은 입력 데이터 파일에 있는 것과 같습니다.",none:"라벨 없음",set_labels_from:"라벨 설정...",fixed:"기본 텍스트",fixed_label_size:"모든 {{items}} 라벨 크기",none_description:"{{items}} 모두 표시된 라벨이 없습니다.",set_labels_size_from:"라벨 크기 설정...",adapts_to_zoom:"줌 할 때 라벨이 얼마나 커져야 하는지",fixed_label:"모든 {{items}} 라벨",fixed_size:"고정 크기",default_value:"유효값을 갖지 않는 {{items}}의 라벨",title:"라벨",data:"데이터 입력",size:"{{items}} 크기"},show_edges:"엣지 보이기",transformation_methods:{title:"변환 방법",sqrt:"제곱근","pow-2":"2제곱",log:"로그",spline:"곡선",linear:"선형적","pow-3":"3제곱"},ranking:"순위",size:{title:"크기",fixed:"기본 크기",default_value:"유효값을 갖지 않는 {{items}}의 크기",data:"입력 파일",set_size_from:"크기 설정...",size_all_items:"{{items}} 모두의 크기",data_description:"{{items}} 모두의 크기는 입력 데이터 파일에 있는 것과 같습니다."},no_caption:"(캡션 없음)",title:"모양",partition:"분할"},Bde={topological:"연결 관계",add_filter:"필터 추가",activated:"활성화된 필터",no_concurrent_edit:"한 번에 하나의 필터만 편집할 수 있습니다. 이 필터를 수정하려면 현재 버전을 확인해 주세요.",full_graph:"전체 그래프",desactivated:"비활성화된 필터, 다시 활성화 하려면 클릭해 주세요",script:"사용자 정의 필터",terms:"정확한 값",description:"이 패널에서는 여러 필터를 적용하여 그래프를 필터링 할 수 있습니다.",using:"적용",filter:"필터",inapplicable:"필터 비활성화됨: 하나의 값만 사용 가능",range:"범위",create_filter:"필터 생성",keepMissingValues:"누락된 값 유지",title:"필터"},Gde={sign_in:"GitHub로 로그인",unauth_success:"인증 취소가 성공적으로 완료됐습니다",sign_out:"GitHub에서 로그아웃"},$de={unselect_all_hidden_nodes:"전체 숨김 엣지 선택 해제",hidden_edges_one:"1개의 선택된 숨김 엣지",unselect_edges:"엣지 선택 해제",unselect_all:"전체 선택 해제",visible_edges:"{{count}} 개의 선택된 가시 엣지",nodes_one:"1개의 선택된 노드",focus_edges:"해당 엣지만 선택",edges:"{{count}} 개의 선택된 엣지",edges_zero:"선택된 엣지 없음",visible_nodes:"{{count}} 개의 선택된 가시 노드",hidden_nodes_one:"1개의 선택된 숨김 노드",select_all:"전체 선택",visible_edges_one:"1개의 선택된 가시 엣지",node_no_label:"(빈 라벨)",locate_on_graph:"그래프에서 찾기",nodes:"{{count}} 개의 선택된 노드",visible_nodes_zero:"선택된 가시 노드 없음",edge_no_label:"(빈 라벨)",hidden_edges:"{{count}} 개의 숨김 엣지",hidden_nodes:"{{count}} 개의 선택된 숨김 노드",unselect_nodes:"노드 선택 해제",visible_edges_zero:"선택된 가시 엣지 없음",focus_nodes:"해당 노드만 선택",empty_nodes:"노드에 속성이 없습니다",edges_one:"1개의 선택된 엣지",visible_nodes_one:"1개의 선택된 가시 노드",empty_edges:"엣지에 속성이 없습니다",nodes_zero:"선택된 노드 없음",unselect_all_hidden_edges:"전체 숨김 엣지 선택 해제"},zde={not_found:{paragraph:"주소를 잘못 입력했거나 페이지가 이동했을 수 있습니다.",subtitle:"찾는 페이지가 존재하지 않습니다.",title:"페이지 없음"},unknown:"알 수 없는 오류가 발생했습니다.",title:"오류"},Hde={title:"레이아웃",exec:{success:'"{{layout}}" 레이아웃이 성공적으로 적용되었습니다.',stopped:"{{layout}} 레이아웃이 중단되었습니다",started:"{{layout}} 레이아웃이 실행 중입니다"},random:{title:"무작위",parameters:{scale:{title:"크기 조절",description:"레이아웃 크기 조절"},center:{title:"중심",description:"레이아웃 중심"}},description:"각 좌표를 구간 [0, 1)에서 무작위로 균일하게 선택하여 모든 노드를 배치하는 무작위 레이아웃"},placeholder:"레이아웃 알고리즘을 선택",description:"이 패널에서 그래프 노드에 대한 새 좌표를 계산할 수 있습니다. ",circular:{title:"원형",description:"원 안에 노드를 배치",parameters:{center:{title:"중심",description:"레이아웃의 중심"},scale:{title:"크기 조절",description:"레이아웃의 크기 조절"}}},force:{title:"힘 방향",parameters:{inertia:{title:"관성",description:"각 단계에서 보존되는 노드 벡터 변위의 백분율입니다. 0은 관성이 없음을 의미하고, 1은 마찰이 없음을 의미"},attraction:{title:"견인력",description:"탄성체와 같이 연결된 각 노드 쌍을 끌어당기는 견인력의 중요성"},repulsion:{description:"자석처럼 각 노드 쌍을 끌어당기는 반발력의 중요성",title:"반발력"},gravity:{title:"중력",description:"모든 노드를 중심으로 끌어들이는 중력의 중요성"},maxMove:{title:"최대 이동",description:"각 단계에서 노드가 움직일 수 있는 최대 길이(픽셀)"}}},circlePack:{parameters:{groupingField:{description:"노드를 그룹화하는 데 사용할 선택적 속성",title:"계층 속성"},scale:{description:"레이아웃 크기 조절",title:"크기 조절"},center:{title:"중심",description:"레이아웃 중심"}},title:"CirclePack(원형 배치)",description:"지정된 속성에 따라 노드를 버블 차트로 배열합니다"},script:{title:"커스텀 레이아웃",description:"각 노드에 대해 {x,y}개의 개체를 반환하는 함수를 생성하여 자신의 레이아웃 작성"},fa2:{parameters:{linLogMode:{title:"LinLog(선형 및 로그) 모드",description:"Noack의 LinLog 모델을 사용할지 여부."},gravity:{description:"레이아웃의 중력 강도",title:"중력"},slowDown:{title:"감속?"},barnesHutTheta:{title:"Barnes-Hut 세타",description:"Barnes-Hut 근사 세타 파라미터"},outboundAttractionDistribution:{title:"외부향 인력 분포"},barnesHutOptimize:{description:"기본 O(n^2)가 아닌 O(n*log(n))에서 반발력을 계산하기 위해 Barnes-Hut 근사를 사용할지 여부(n은 노드 수)",title:"Barnes-Hut 최적화"},adjustSizes:{description:"노드의 크기를 고려해야 할까요?",title:"크기를 조정?"},strongGravityMode:{title:"강한 중력 모드?"},edgeWeightInfluence:{title:"엣지 가중치 영향도",description:"레이아웃에 대한 엣지의 가중치 영향도"},scalingRatio:{title:"크기 조절 비율"}},title:"ForceAtlas2",buttons:{autoSettings:{title:"추측 설정",description:"현재 그래프에 가장 적합한 설정을 생성합니다"}}},noverlap:{parameters:{speed:{title:"속도",description:"전체 프로세스를 용이하게 하기 위해 노드 이동 속도를 늦추는 감쇠 계수"},expansion:{description:"노드가 외부로 이동을 시도할 수 있는 현재 공간의 백분율",title:"확장"},gridSize:{description:"그래프의 공간을 수평과 수직으로 세분화하는 그리드 셀의 수. 이를 최적화 방법으로 사용합니다. 1로 설정하면 O(n²) 시간 복잡도를 가질 수 있으며, 때로는 매우 적은 노드로 더 나은 성능을 발휘할 수 있습니다.",title:"그리드 크기"},margin:{description:"노드 사이를 유지할 여백",title:"여백"},ratio:{title:"비율",description:"비율 조정 노드 크기"}},title:"겹침 없음",description:"충돌 방지 레이아웃 알고리즘"}},Vde={title:"데이터 개요"},qde={github:"GitHub"},Yde={select_ui_language:"어플리케이션 언어 선택",title:"GitHub 인증",logged_as:"현재 {{username}}으로 GitHub에 로그인되어 있습니다.",description:"Gephi Lite에서 GitHub에 로그인하여 GitHub Gists로 직접 그래프 파일을 저장하고 로드할 수 있습니다."},jde={cannot_restore:"그래프를 복원할 수 없습니다.",restore_successful:"작업 그래프가 복원되었습니다."},Wde={avatar_alt:"{{name}}의 아바타"},Kde={nodes:{help:"노드를 검색할 항목을 입력",other_result:"... 그리고 {{count}} 개의 다른 노드",placeholder:"노드 검색 ...",no_result:"노드가 없습니다"},edges:{help:"엣지를 검색할 항목을 입력",placeholder:"엣지 검색...",no_result:"엣지가 없습니다",other_result:"... 그리고 {{count}} 개의 다른 엣지"},graph:{no_result:"결과 없음",select_all_nodes:"선택 항목에 {{count}} 개 노드를 추가",help:"검색할 항목을 입력",other_result:"... 그리고 {{count}} 개의 다른 결과",select_all_edges:"선택 항목에 {{count}} 개 엣지를 추가",placeholder:"노드, 엣지 검색..."}},Qde={hide:"숨기기",start:"시작",edit:"편집",show_more:"더 보이기",updated:"업데이트됨",save:"저장",collapse:"붕괴",add:"추가",created:"생성됨",all:"전체","load-more":"더 로드하기","save-and-run":"저장 및 실행",max:"최대",open_code_editor:"코드 편집기 열기",clear:"지우기",stop:"정지",delete:"삭제",cancel:"취소",show:"보이기",copy:"복사",confirm:"확인",select:"선택...",reset:"재설정",open:"열기",open_file:"{{filename}} 파일 열기",show_less:"덜 보이기",none:"없음",filename:"파일 이름",expand:"확장",apply:"적용",submit:"제출",loading:"로드 중",min:"최소",remove:"제거",size:"크기",close:"닫기"},Xde={github:{auth:{copy_success:"코드가 클립보드에 저장됨",asking_for_device_code:"GitHub에 장치 코드를 요청 중",title:"GitHub 인증",waiting_validation:"검증 대기 중",copy_code:'아래 코드를 복사하고 "GitHub 열기" 버튼을 클릭하세요. GitHub가 코드를 묻는 새 탭이 열립니다'},title:"GitHub"}},Zde={title:"데이터 관리",login_capabilities:"GitHub Gists로 직접 그래프 파일을 저장하고 로드하기 위해, Gephi Lite에서 GitHub에 로그인 가능합니다:"},Jde={graph:Mde,edition:Lde,welcome:kde,statistics:Pde,menu:Fde,appearance:Ude,filters:Bde,auth:Gde,selection:$de,error:zde,layouts:Hde,context:Vde,providers:qde,github:Yde,storage:jde,"gephi-lite":{title:"Gephi Lite",info:"Gephi Lite에 대한 추가 정보"},user:Wde,search:Kde,common:Qde,cloud:Xde,file:Zde};var efe={VITE_GITHUB_PROXY:"https://githubapi.gephi.org",BASE_URL:"/gephi-lite/",MODE:"production",DEV:!1,PROD:!0,SSR:!1};const FO={dev:{translation:Sue,label:"Dev language"},en:{translation:Hue,label:"English"},fr:{translation:dde,label:"Français"},hu:{translation:Ide,label:"Magyar"},ko:{translation:Jde,label:"한국인"}},iF=efe.NODE_ENV!=="production"?"dev":"en",Yb=Yr.use(Jne).use(IH);Yb.init({debug:!1,fallbackLng:iF,resources:FO,detection:{order:["querystring","navigator"],lookupQuerystring:"lang",convertDetectedLanguage:e=>e in FO?e:iF}}).then(()=>{var e,t;(e=Yr.services.formatter)==null||e.add("lowercase",(n,r,i)=>n.toLowerCase()),(t=Yr.services.formatter)==null||t.add("capitalize",(n,r,i)=>Se.capitalize(n))});const tfe=({children:e})=>{const{locale:t}=Hc();return x.useEffect(()=>{t&&Yb.changeLanguage(t)},[t]),h.jsx(rre,{i18n:Yb,children:e})};function aF(){return{recentRemoteFiles:[],layoutsParameters:{},metrics:{},locale:Yb.language,theme:"auto"}}function MH(){try{const e=localStorage.getItem("preferences"),t=e?rfe(e):null;return{...aF(),...t}}catch{return aF()}}function nfe(e){return Yu(e)}function rfe(e){try{return Fp(e)}catch{return null}}function fy(e){return e==="auto"?window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light":e}const ife=e=>t=>({...t,recentRemoteFiles:[e,...t.recentRemoteFiles.filter(n=>!Se.isEqual(n,e))].slice(0,5)}),afe=e=>t=>({...t,locale:e}),ofe=e=>t=>({...t,theme:e}),up=mi(MH()),LH={addRemoteFile:vt(ife,up),changeLocale:vt(afe,up),changeTheme:vt(ofe,up)};up.bind((e,t)=>{localStorage.setItem("preferences",nfe(e)),(t.theme!==e.theme||!document.documentElement.getAttribute("data-bs-theme"))&&document.documentElement.setAttribute("data-bs-theme",fy(e.theme))});function vi(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function sfe(e,t){if(typeof e!="object"||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||"default");if(typeof r!="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}function kH(e){var t=sfe(e,"string");return typeof t=="symbol"?t:String(t)}function oF(e,t){for(var n=0;ne.length)&&(t=e.length);for(var n=0,r=new Array(t);n>>16,n=(e&65280)>>>8,r=e&255,i=255,a=BH(t,n,r,i);return qC[e]=a,a}function sF(e,t,n,r){return n+(t<<8)+(e<<16)}function lF(e,t,n,r,i,a){var o=Math.floor(n/a*i),s=Math.floor(e.drawingBufferHeight/a-r/a*i),l=new Uint8Array(4);e.bindFramebuffer(e.FRAMEBUFFER,t),e.readPixels(o,s,1,1,e.RGBA,e.UNSIGNED_BYTE,l);var c=jb(l,4),u=c[0],f=c[1],p=c[2],m=c[3];return[u,f,p,m]}function Ye(e,t,n){return t=kH(t),t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function cF(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(i){return Object.getOwnPropertyDescriptor(e,i).enumerable})),n.push.apply(n,r)}return n}function Mt(e){for(var t=1;t{if(!e)throw new Error("Function is not defined");const t=vl(Wt.get()),n=t.nodes()[0],r=t.getNodeAttributes(n),i=e(n,r,0,t);if(!Se.isObject(i))throw new Error("Function must returned an object");if(Se.isNil(i.x))throw new Error("Function must returned an object with a `x` property");if(Se.isNil(i.y))throw new Error("Function must returned an object with a `y` property")}}],run(e,t){const{script:n}=(t==null?void 0:t.settings)||{};if(!n)return console.error("[layout] Custom function is not defined"),{};const r=e.copy();Object.freeze(r);const i={};return e.nodes().forEach((a,o)=>{i[a]=n(a,e.getNodeAttributes(a),o,r)}),i}}];function Wme(){return{quality:{enabled:!1,showGrid:!0},type:"idle"}}function Kme(){const e=localStorage.getItem("layout"),t=e?JSON.parse(e):null;return{...Wme(),...t}}const ys=mi(Kme()),Qme=async(e,t)=>{const{setNodePositions:n}=Jh,r=Wt.get(),i=F7.find(a=>a.id===e);if(i&&i.type==="sync"){ys.set(s=>({...s,type:"running",layoutId:e}));const a=vl(r),o=i.run(a,{settings:t});n(o),setTimeout(()=>{ys.set(s=>({...s,type:"idle"})),a_({forceRefresh:!1})},0)}if(i&&i.type==="worker"){const a=new i.supervisor($p.get(),{settings:t});a.start(),ys.set(o=>({...o,type:"running",layoutId:e,supervisor:a}))}},Xme=async()=>{const{setNodePositions:e}=Jh,t=ys.get();if(t.type==="running"&&t.supervisor){t.supervisor.stop(),t.supervisor.kill();const n={};$p.get().forEachNode((r,{x:i,y:a})=>{n[r]={x:i,y:a}}),e(n)}ys.set(n=>({...n,type:"idle"}))},Zme=e=>t=>({...t,quality:e}),Jme=()=>{const e=$p.get();try{const t=Ege(e,{rng:Fge("gephi-lite")});return n=>({...n,quality:{...n.quality,metric:t}})}catch{return Se.identity}},U7={startLayout:Qme,stopLayout:Xme,setQuality:vt(Zme,ys),computeLayoutQualityMetric:vt(Jme,ys)},ehe=Qh(ys,e=>Se.pick(e.quality,"enabled"),{checkOutput:!0});ehe.bindEffect(e=>{if(!e)return;const{computeLayoutQualityMetric:t}=U7,n=Se.debounce(t,300,{leading:!0,maxWait:300});t();const r=$p.get();return r.on("graphImported",n),r.on("nodeAttributesUpdated",n),r.on("eachNodeAttributesUpdated",n),()=>{r.off("graphImported",n),r.off("eachNodeAttributesUpdated",n),r.off("nodeAttributesUpdated",n)}});function MD(){return{layoutsParameters:{},metrics:{}}}function the(e){return Yu(e)}function nhe(e){try{return Fp(e)}catch{return null}}const qp=mi(MD()),rhe=()=>()=>MD(),ihe={reset:vt(rhe,qp)};qp.bind(e=>{sessionStorage.setItem("session",the(e))});function Li(e){return()=>{const t=x.useContext(e);return Xh(t)}}function Il(e){return()=>e}const Kr={sigma:i_,filters:Xr,selection:Kf,importState:zm,exportState:QE,appearance:Oi,sigmaState:qa,sigmaGraph:$p,preferences:up,graphDataset:Wt,filteredGraph:ay,visualGetters:nD,search:rl,layoutState:ys,session:qp,user:Zh},bi={appearance:x.createContext(Kr.appearance),filters:x.createContext(Kr.filters),filteredGraph:x.createContext(Kr.filteredGraph),graphDataset:x.createContext(Kr.graphDataset),exportState:x.createContext(Kr.exportState),importState:x.createContext(Kr.importState),visualGetters:x.createContext(Kr.visualGetters),layoutState:x.createContext(Kr.layoutState),preferences:x.createContext(Kr.preferences),search:x.createContext(Kr.search),selection:x.createContext(Kr.selection),session:x.createContext(Kr.session),sigma:x.createContext(Kr.sigma),sigmaState:x.createContext(Kr.sigmaState),sigmaGraph:x.createContext(Kr.sigmaGraph),user:x.createContext(Kr.user)},ahe=({children:e})=>h.jsx(h.Fragment,{children:Se.reduce(bi,(t,n,r)=>h.jsx(n.Provider,{value:Kr[r],children:t||null}),e)}),B7=(e=!1)=>{w9.resetFilters(),q9.reset(),Z8.resetState(),Nc.resetState(),H9.reset(),Jh.resetGraph(),e&&(wie.reset(),ihe.reset())},_y=Li(bi.filters),LD=Li(bi.sigma),s_=Li(bi.selection),kD=Li(bi.importState),ohe=Li(bi.exportState),lo=Li(bi.appearance),G7=Li(bi.sigmaState),$7=Li(bi.sigmaGraph),Hc=Li(bi.preferences),Nr=Li(bi.graphDataset),Qu=Li(bi.filteredGraph),vy=Li(bi.visualGetters),she=Li(bi.search),Ey=Li(bi.layoutState);Li(bi.user);const z7=Il(Nc),Yp=Il(w9),Xu=Il(q9),jp=Il(Z8),zo=Il(Jh),H7=Il(LH),l_=Il(Hpe),V7=Il(rce),q7=Il(U7);var Wa={},c_={},lhe=typeof Wn=="object"&&Wn&&Wn.Object===Object&&Wn,Y7=lhe,che=Y7,uhe=typeof self=="object"&&self&&self.Object===Object&&self,dhe=che||uhe||Function("return this")(),ws=dhe,fhe=ws,phe=fhe.Symbol,u_=phe,UF=u_,j7=Object.prototype,ghe=j7.hasOwnProperty,mhe=j7.toString,Om=UF?UF.toStringTag:void 0;function hhe(e){var t=ghe.call(e,Om),n=e[Om];try{e[Om]=void 0;var r=!0}catch{}var i=mhe.call(e);return r&&(t?e[Om]=n:delete e[Om]),i}var _he=hhe,vhe=Object.prototype,Ehe=vhe.toString;function bhe(e){return Ehe.call(e)}var She=bhe,BF=u_,yhe=_he,The=She,Che="[object Null]",Rhe="[object Undefined]",GF=BF?BF.toStringTag:void 0;function Nhe(e){return e==null?e===void 0?Rhe:Che:GF&&GF in Object(e)?yhe(e):The(e)}var Zu=Nhe,Ahe=Array.isArray,Ho=Ahe;function whe(e){return e!=null&&typeof e=="object"}var Ml=whe,Ohe=Zu,xhe=Ho,Dhe=Ml,Ihe="[object String]";function Mhe(e){return typeof e=="string"||!xhe(e)&&Dhe(e)&&Ohe(e)==Ihe}var Lhe=Mhe;function khe(e){return function(t,n,r){for(var i=-1,a=Object(t),o=r(t),s=o.length;s--;){var l=o[e?s:++i];if(n(a[l],l,a)===!1)break}return t}}var Phe=khe,Fhe=Phe,Uhe=Fhe(),Bhe=Uhe;function Ghe(e,t){for(var n=-1,r=Array(e);++n-1&&e%1==0&&e-1&&e%1==0&&e<=n_e}var FD=r_e,i_e=Zu,a_e=FD,o_e=Ml,s_e="[object Arguments]",l_e="[object Array]",c_e="[object Boolean]",u_e="[object Date]",d_e="[object Error]",f_e="[object Function]",p_e="[object Map]",g_e="[object Number]",m_e="[object Object]",h_e="[object RegExp]",__e="[object Set]",v_e="[object String]",E_e="[object WeakMap]",b_e="[object ArrayBuffer]",S_e="[object DataView]",y_e="[object Float32Array]",T_e="[object Float64Array]",C_e="[object Int8Array]",R_e="[object Int16Array]",N_e="[object Int32Array]",A_e="[object Uint8Array]",w_e="[object Uint8ClampedArray]",O_e="[object Uint16Array]",x_e="[object Uint32Array]",Pn={};Pn[y_e]=Pn[T_e]=Pn[C_e]=Pn[R_e]=Pn[N_e]=Pn[A_e]=Pn[w_e]=Pn[O_e]=Pn[x_e]=!0;Pn[s_e]=Pn[l_e]=Pn[b_e]=Pn[c_e]=Pn[S_e]=Pn[u_e]=Pn[d_e]=Pn[f_e]=Pn[p_e]=Pn[g_e]=Pn[m_e]=Pn[h_e]=Pn[__e]=Pn[v_e]=Pn[E_e]=!1;function D_e(e){return o_e(e)&&a_e(e.length)&&!!Pn[i_e(e)]}var I_e=D_e;function M_e(e){return function(t){return e(t)}}var UD=M_e,eS={exports:{}};eS.exports;(function(e,t){var n=Y7,r=t&&!t.nodeType&&t,i=r&&!0&&e&&!e.nodeType&&e,a=i&&i.exports===r,o=a&&n.process,s=function(){try{var l=i&&i.require&&i.require("util").types;return l||o&&o.binding&&o.binding("util")}catch{}}();e.exports=s})(eS,eS.exports);var BD=eS.exports,L_e=I_e,k_e=UD,zF=BD,HF=zF&&zF.isTypedArray,P_e=HF?k_e(HF):L_e,X7=P_e,F_e=$he,U_e=K7,B_e=Ho,G_e=PD,$_e=Q7,z_e=X7,H_e=Object.prototype,V_e=H_e.hasOwnProperty;function q_e(e,t){var n=B_e(e),r=!n&&U_e(e),i=!n&&!r&&G_e(e),a=!n&&!r&&!i&&z_e(e),o=n||r||i||a,s=o?F_e(e.length,String):[],l=s.length;for(var c in e)(t||V_e.call(e,c))&&!(o&&(c=="length"||i&&(c=="offset"||c=="parent")||a&&(c=="buffer"||c=="byteLength"||c=="byteOffset")||$_e(c,l)))&&s.push(c);return s}var Z7=q_e,Y_e=Object.prototype;function j_e(e){var t=e&&e.constructor,n=typeof t=="function"&&t.prototype||Y_e;return e===n}var GD=j_e;function W_e(e,t){return function(n){return e(t(n))}}var J7=W_e,K_e=J7,Q_e=K_e(Object.keys,Object),X_e=Q_e,Z_e=GD,J_e=X_e,eve=Object.prototype,tve=eve.hasOwnProperty;function nve(e){if(!Z_e(e))return J_e(e);var t=[];for(var n in Object(e))tve.call(e,n)&&n!="constructor"&&t.push(n);return t}var rve=nve;function ive(e){var t=typeof e;return e!=null&&(t=="object"||t=="function")}var Wp=ive,ave=Zu,ove=Wp,sve="[object AsyncFunction]",lve="[object Function]",cve="[object GeneratorFunction]",uve="[object Proxy]";function dve(e){if(!ove(e))return!1;var t=ave(e);return t==lve||t==cve||t==sve||t==uve}var eV=dve,fve=eV,pve=FD;function gve(e){return e!=null&&pve(e.length)&&!fve(e)}var by=gve,mve=Z7,hve=rve,_ve=by;function vve(e){return _ve(e)?mve(e):hve(e)}var d_=vve,Eve=Bhe,bve=d_;function Sve(e,t){return e&&Eve(e,t,bve)}var tV=Sve;function yve(e){return e}var nV=yve,Tve=nV;function Cve(e){return typeof e=="function"?e:Tve}var Rve=Cve,Nve=tV,Ave=Rve;function wve(e,t){return e&&Nve(e,Ave(t))}var $D=wve,Ove=J7,xve=Ove(Object.getPrototypeOf,Object),zD=xve,Dve=Zu,Ive=zD,Mve=Ml,Lve="[object Object]",kve=Function.prototype,Pve=Object.prototype,rV=kve.toString,Fve=Pve.hasOwnProperty,Uve=rV.call(Object);function Bve(e){if(!Mve(e)||Dve(e)!=Lve)return!1;var t=Ive(e);if(t===null)return!0;var n=Fve.call(t,"constructor")&&t.constructor;return typeof n=="function"&&n instanceof n&&rV.call(n)==Uve}var Gve=Bve;function $ve(e,t){for(var n=-1,r=e==null?0:e.length,i=Array(r);++n-1}var rEe=nEe,iEe=Sy;function aEe(e,t){var n=this.__data__,r=iEe(n,e);return r<0?(++this.size,n.push([e,t])):n[r][1]=t,this}var oEe=aEe,sEe=Hve,lEe=Xve,cEe=eEe,uEe=rEe,dEe=oEe;function Kp(e){var t=-1,n=e==null?0:e.length;for(this.clear();++ts))return!1;var c=a.get(e),u=a.get(t);if(c&&u)return c==t&&u==e;var f=-1,p=!0,m=n&TSe?new ESe:void 0;for(a.set(e,t),a.set(t,e);++f0&&arguments[0]!==void 0?arguments[0]:[],n=[];return(0,pCe.default)(t,function(r){Array.isArray(r)?e(r).map(function(i){return n.push(i)}):(0,dCe.default)(r)?(0,cCe.default)(r,function(i,a){i===!0&&n.push(a),n.push(a+"-"+i)}):(0,sCe.default)(r)&&n.push(r)}),n};c_.default=gCe;var f_={};function mCe(e,t){for(var n=-1,r=e==null?0:e.length;++n1&&arguments[1]!==void 0?arguments[1]:[],r=t.default&&(0,kNe.default)(t.default)||{};return n.map(function(i){var a=t[i];return a&&(0,MNe.default)(a,function(o,s){r[s]||(r[s]={}),r[s]=PNe({},r[s],a[s])}),i}),r};f_.default=FNe;var p_={};Object.defineProperty(p_,"__esModule",{value:!0});p_.autoprefix=void 0;var UNe=$D,T3=GNe(UNe),BNe=Object.assign||function(e){for(var t=1;t1&&arguments[1]!==void 0?arguments[1]:"span";return function(r){jNe(i,r);function i(){var a,o,s,l;YNe(this,i);for(var c=arguments.length,u=Array(c),f=0;f1&&arguments[1]!==void 0?arguments[1]:"span";return function(r){JNe(i,r);function i(){var a,o,s,l;ZNe(this,i);for(var c=arguments.length,u=Array(c),f=0;f1&&arguments[1]!==void 0?arguments[1]:!0;r[o]=s};return t===0&&i("first-child"),t===n-1&&i("last-child"),(t===0||t%2===0)&&i("even"),Math.abs(t%2)===1&&i("odd"),i("nth-child",t),r};JD.default=tAe;Object.defineProperty(Wa,"__esModule",{value:!0});Wa.ReactCSS=Wa.loop=Wa.handleActive=eI=Wa.handleHover=Wa.hover=void 0;var nAe=c_,rAe=eg(nAe),iAe=f_,aAe=eg(iAe),oAe=p_,sAe=eg(oAe),lAe=g_,wV=eg(lAe),cAe=m_,uAe=eg(cAe),dAe=JD,fAe=eg(dAe);function eg(e){return e&&e.__esModule?e:{default:e}}Wa.hover=wV.default;var eI=Wa.handleHover=wV.default;Wa.handleActive=uAe.default;Wa.loop=fAe.default;var pAe=Wa.ReactCSS=function(t){for(var n=arguments.length,r=Array(n>1?n-1:0),i=1;is?p=1:p=Math.round(f*100/s)/100,n.a!==p)return{h:n.h,s:n.s,l:n.l,a:p,source:"rgb"}}else{var m=void 0;if(u<0?m=0:u>o?m=1:m=Math.round(u*100/o)/100,i!==m)return{h:n.h,s:n.s,l:n.l,a:m,source:"rgb"}}return null},a1={},mAe=function(t,n,r,i){if(typeof document>"u"&&!i)return null;var a=i?new i:document.createElement("canvas");a.width=r*2,a.height=r*2;var o=a.getContext("2d");return o?(o.fillStyle=t,o.fillRect(0,0,a.width,a.height),o.fillStyle=n,o.fillRect(0,0,r,r),o.translate(r,r),o.fillRect(0,0,r,r),a.toDataURL()):null},hAe=function(t,n,r,i){var a=t+"-"+n+"-"+r+(i?"-server":"");if(a1[a])return a1[a];var o=mAe(t,n,r,i);return a1[a]=o,o},N3=Object.assign||function(e){for(var t=1;t{if(!e)throw new Error("Function is not defined");const t=vl(Wt.get()),n=t.nodes()[0],r=t.getNodeAttributes(n),i=e(n,r,0,t);if(!Se.isObject(i))throw new Error("Function must returned an object");if(Se.isNil(i.x))throw new Error("Function must returned an object with a `x` property");if(Se.isNil(i.y))throw new Error("Function must returned an object with a `y` property")}}],run(e,t){const{script:n}=(t==null?void 0:t.settings)||{};if(!n)return console.error("[layout] Custom function is not defined"),{};const r=e.copy();Object.freeze(r);const i={};return e.nodes().forEach((a,o)=>{i[a]=n(a,e.getNodeAttributes(a),o,r)}),i}}];function Wme(){return{quality:{enabled:!1,showGrid:!0},type:"idle"}}function Kme(){const e=localStorage.getItem("layout"),t=e?JSON.parse(e):null;return{...Wme(),...t}}const ys=mi(Kme()),Qme=async(e,t)=>{const{setNodePositions:n}=Jh,r=Wt.get(),i=F7.find(a=>a.id===e);if(i&&i.type==="sync"){ys.set(s=>({...s,type:"running",layoutId:e}));const a=vl(r),o=i.run(a,{settings:t});n(o),setTimeout(()=>{ys.set(s=>({...s,type:"idle"})),a_({forceRefresh:!1})},0)}if(i&&i.type==="worker"){const a=new i.supervisor($p.get(),{settings:t});a.start(),ys.set(o=>({...o,type:"running",layoutId:e,supervisor:a}))}},Xme=async()=>{const{setNodePositions:e}=Jh,t=ys.get();if(t.type==="running"&&t.supervisor){t.supervisor.stop(),t.supervisor.kill();const n={};$p.get().forEachNode((r,{x:i,y:a})=>{n[r]={x:i,y:a}}),e(n)}ys.set(n=>({...n,type:"idle"}))},Zme=e=>t=>({...t,quality:e}),Jme=()=>{const e=$p.get();try{const t=Ege(e,{rng:Fge("gephi-lite")});return n=>({...n,quality:{...n.quality,metric:t}})}catch{return Se.identity}},U7={startLayout:Qme,stopLayout:Xme,setQuality:vt(Zme,ys),computeLayoutQualityMetric:vt(Jme,ys)},ehe=Qh(ys,e=>Se.pick(e.quality,"enabled"),{checkOutput:!0});ehe.bindEffect(e=>{if(!e.enabled)return;const{computeLayoutQualityMetric:t}=U7,n=Se.debounce(t,300,{leading:!0,maxWait:300});t();const r=$p.get();return r.on("graphImported",n),r.on("nodesDragged",n),r.on("eachNodeAttributesUpdated",n),()=>{r.off("graphImported",n),r.off("nodesDragged",n),r.off("eachNodeAttributesUpdated",n)}});function MD(){return{layoutsParameters:{},metrics:{}}}function the(e){return Yu(e)}function nhe(e){try{return Fp(e)}catch{return null}}const qp=mi(MD()),rhe=()=>()=>MD(),ihe={reset:vt(rhe,qp)};qp.bind(e=>{sessionStorage.setItem("session",the(e))});function Li(e){return()=>{const t=x.useContext(e);return Xh(t)}}function Il(e){return()=>e}const Kr={sigma:i_,filters:Xr,selection:Kf,importState:zm,exportState:QE,appearance:Oi,sigmaState:qa,sigmaGraph:$p,preferences:up,graphDataset:Wt,filteredGraph:ay,visualGetters:nD,search:rl,layoutState:ys,session:qp,user:Zh},bi={appearance:x.createContext(Kr.appearance),filters:x.createContext(Kr.filters),filteredGraph:x.createContext(Kr.filteredGraph),graphDataset:x.createContext(Kr.graphDataset),exportState:x.createContext(Kr.exportState),importState:x.createContext(Kr.importState),visualGetters:x.createContext(Kr.visualGetters),layoutState:x.createContext(Kr.layoutState),preferences:x.createContext(Kr.preferences),search:x.createContext(Kr.search),selection:x.createContext(Kr.selection),session:x.createContext(Kr.session),sigma:x.createContext(Kr.sigma),sigmaState:x.createContext(Kr.sigmaState),sigmaGraph:x.createContext(Kr.sigmaGraph),user:x.createContext(Kr.user)},ahe=({children:e})=>h.jsx(h.Fragment,{children:Se.reduce(bi,(t,n,r)=>h.jsx(n.Provider,{value:Kr[r],children:t||null}),e)}),B7=(e=!1)=>{w9.resetFilters(),q9.reset(),Z8.resetState(),Nc.resetState(),H9.reset(),Jh.resetGraph(),e&&(wie.reset(),ihe.reset())},_y=Li(bi.filters),LD=Li(bi.sigma),s_=Li(bi.selection),kD=Li(bi.importState),ohe=Li(bi.exportState),lo=Li(bi.appearance),G7=Li(bi.sigmaState),$7=Li(bi.sigmaGraph),Hc=Li(bi.preferences),Nr=Li(bi.graphDataset),Qu=Li(bi.filteredGraph),vy=Li(bi.visualGetters),she=Li(bi.search),Ey=Li(bi.layoutState);Li(bi.user);const z7=Il(Nc),Yp=Il(w9),Xu=Il(q9),jp=Il(Z8),zo=Il(Jh),H7=Il(LH),l_=Il(Hpe),V7=Il(rce),q7=Il(U7);var Wa={},c_={},lhe=typeof Wn=="object"&&Wn&&Wn.Object===Object&&Wn,Y7=lhe,che=Y7,uhe=typeof self=="object"&&self&&self.Object===Object&&self,dhe=che||uhe||Function("return this")(),ws=dhe,fhe=ws,phe=fhe.Symbol,u_=phe,UF=u_,j7=Object.prototype,ghe=j7.hasOwnProperty,mhe=j7.toString,Om=UF?UF.toStringTag:void 0;function hhe(e){var t=ghe.call(e,Om),n=e[Om];try{e[Om]=void 0;var r=!0}catch{}var i=mhe.call(e);return r&&(t?e[Om]=n:delete e[Om]),i}var _he=hhe,vhe=Object.prototype,Ehe=vhe.toString;function bhe(e){return Ehe.call(e)}var She=bhe,BF=u_,yhe=_he,The=She,Che="[object Null]",Rhe="[object Undefined]",GF=BF?BF.toStringTag:void 0;function Nhe(e){return e==null?e===void 0?Rhe:Che:GF&&GF in Object(e)?yhe(e):The(e)}var Zu=Nhe,Ahe=Array.isArray,Ho=Ahe;function whe(e){return e!=null&&typeof e=="object"}var Ml=whe,Ohe=Zu,xhe=Ho,Dhe=Ml,Ihe="[object String]";function Mhe(e){return typeof e=="string"||!xhe(e)&&Dhe(e)&&Ohe(e)==Ihe}var Lhe=Mhe;function khe(e){return function(t,n,r){for(var i=-1,a=Object(t),o=r(t),s=o.length;s--;){var l=o[e?s:++i];if(n(a[l],l,a)===!1)break}return t}}var Phe=khe,Fhe=Phe,Uhe=Fhe(),Bhe=Uhe;function Ghe(e,t){for(var n=-1,r=Array(e);++n-1&&e%1==0&&e-1&&e%1==0&&e<=n_e}var FD=r_e,i_e=Zu,a_e=FD,o_e=Ml,s_e="[object Arguments]",l_e="[object Array]",c_e="[object Boolean]",u_e="[object Date]",d_e="[object Error]",f_e="[object Function]",p_e="[object Map]",g_e="[object Number]",m_e="[object Object]",h_e="[object RegExp]",__e="[object Set]",v_e="[object String]",E_e="[object WeakMap]",b_e="[object ArrayBuffer]",S_e="[object DataView]",y_e="[object Float32Array]",T_e="[object Float64Array]",C_e="[object Int8Array]",R_e="[object Int16Array]",N_e="[object Int32Array]",A_e="[object Uint8Array]",w_e="[object Uint8ClampedArray]",O_e="[object Uint16Array]",x_e="[object Uint32Array]",Pn={};Pn[y_e]=Pn[T_e]=Pn[C_e]=Pn[R_e]=Pn[N_e]=Pn[A_e]=Pn[w_e]=Pn[O_e]=Pn[x_e]=!0;Pn[s_e]=Pn[l_e]=Pn[b_e]=Pn[c_e]=Pn[S_e]=Pn[u_e]=Pn[d_e]=Pn[f_e]=Pn[p_e]=Pn[g_e]=Pn[m_e]=Pn[h_e]=Pn[__e]=Pn[v_e]=Pn[E_e]=!1;function D_e(e){return o_e(e)&&a_e(e.length)&&!!Pn[i_e(e)]}var I_e=D_e;function M_e(e){return function(t){return e(t)}}var UD=M_e,eS={exports:{}};eS.exports;(function(e,t){var n=Y7,r=t&&!t.nodeType&&t,i=r&&!0&&e&&!e.nodeType&&e,a=i&&i.exports===r,o=a&&n.process,s=function(){try{var l=i&&i.require&&i.require("util").types;return l||o&&o.binding&&o.binding("util")}catch{}}();e.exports=s})(eS,eS.exports);var BD=eS.exports,L_e=I_e,k_e=UD,zF=BD,HF=zF&&zF.isTypedArray,P_e=HF?k_e(HF):L_e,X7=P_e,F_e=$he,U_e=K7,B_e=Ho,G_e=PD,$_e=Q7,z_e=X7,H_e=Object.prototype,V_e=H_e.hasOwnProperty;function q_e(e,t){var n=B_e(e),r=!n&&U_e(e),i=!n&&!r&&G_e(e),a=!n&&!r&&!i&&z_e(e),o=n||r||i||a,s=o?F_e(e.length,String):[],l=s.length;for(var c in e)(t||V_e.call(e,c))&&!(o&&(c=="length"||i&&(c=="offset"||c=="parent")||a&&(c=="buffer"||c=="byteLength"||c=="byteOffset")||$_e(c,l)))&&s.push(c);return s}var Z7=q_e,Y_e=Object.prototype;function j_e(e){var t=e&&e.constructor,n=typeof t=="function"&&t.prototype||Y_e;return e===n}var GD=j_e;function W_e(e,t){return function(n){return e(t(n))}}var J7=W_e,K_e=J7,Q_e=K_e(Object.keys,Object),X_e=Q_e,Z_e=GD,J_e=X_e,eve=Object.prototype,tve=eve.hasOwnProperty;function nve(e){if(!Z_e(e))return J_e(e);var t=[];for(var n in Object(e))tve.call(e,n)&&n!="constructor"&&t.push(n);return t}var rve=nve;function ive(e){var t=typeof e;return e!=null&&(t=="object"||t=="function")}var Wp=ive,ave=Zu,ove=Wp,sve="[object AsyncFunction]",lve="[object Function]",cve="[object GeneratorFunction]",uve="[object Proxy]";function dve(e){if(!ove(e))return!1;var t=ave(e);return t==lve||t==cve||t==sve||t==uve}var eV=dve,fve=eV,pve=FD;function gve(e){return e!=null&&pve(e.length)&&!fve(e)}var by=gve,mve=Z7,hve=rve,_ve=by;function vve(e){return _ve(e)?mve(e):hve(e)}var d_=vve,Eve=Bhe,bve=d_;function Sve(e,t){return e&&Eve(e,t,bve)}var tV=Sve;function yve(e){return e}var nV=yve,Tve=nV;function Cve(e){return typeof e=="function"?e:Tve}var Rve=Cve,Nve=tV,Ave=Rve;function wve(e,t){return e&&Nve(e,Ave(t))}var $D=wve,Ove=J7,xve=Ove(Object.getPrototypeOf,Object),zD=xve,Dve=Zu,Ive=zD,Mve=Ml,Lve="[object Object]",kve=Function.prototype,Pve=Object.prototype,rV=kve.toString,Fve=Pve.hasOwnProperty,Uve=rV.call(Object);function Bve(e){if(!Mve(e)||Dve(e)!=Lve)return!1;var t=Ive(e);if(t===null)return!0;var n=Fve.call(t,"constructor")&&t.constructor;return typeof n=="function"&&n instanceof n&&rV.call(n)==Uve}var Gve=Bve;function $ve(e,t){for(var n=-1,r=e==null?0:e.length,i=Array(r);++n-1}var rEe=nEe,iEe=Sy;function aEe(e,t){var n=this.__data__,r=iEe(n,e);return r<0?(++this.size,n.push([e,t])):n[r][1]=t,this}var oEe=aEe,sEe=Hve,lEe=Xve,cEe=eEe,uEe=rEe,dEe=oEe;function Kp(e){var t=-1,n=e==null?0:e.length;for(this.clear();++ts))return!1;var c=a.get(e),u=a.get(t);if(c&&u)return c==t&&u==e;var f=-1,p=!0,m=n&TSe?new ESe:void 0;for(a.set(e,t),a.set(t,e);++f0&&arguments[0]!==void 0?arguments[0]:[],n=[];return(0,pCe.default)(t,function(r){Array.isArray(r)?e(r).map(function(i){return n.push(i)}):(0,dCe.default)(r)?(0,cCe.default)(r,function(i,a){i===!0&&n.push(a),n.push(a+"-"+i)}):(0,sCe.default)(r)&&n.push(r)}),n};c_.default=gCe;var f_={};function mCe(e,t){for(var n=-1,r=e==null?0:e.length;++n1&&arguments[1]!==void 0?arguments[1]:[],r=t.default&&(0,kNe.default)(t.default)||{};return n.map(function(i){var a=t[i];return a&&(0,MNe.default)(a,function(o,s){r[s]||(r[s]={}),r[s]=PNe({},r[s],a[s])}),i}),r};f_.default=FNe;var p_={};Object.defineProperty(p_,"__esModule",{value:!0});p_.autoprefix=void 0;var UNe=$D,T3=GNe(UNe),BNe=Object.assign||function(e){for(var t=1;t1&&arguments[1]!==void 0?arguments[1]:"span";return function(r){jNe(i,r);function i(){var a,o,s,l;YNe(this,i);for(var c=arguments.length,u=Array(c),f=0;f1&&arguments[1]!==void 0?arguments[1]:"span";return function(r){JNe(i,r);function i(){var a,o,s,l;ZNe(this,i);for(var c=arguments.length,u=Array(c),f=0;f1&&arguments[1]!==void 0?arguments[1]:!0;r[o]=s};return t===0&&i("first-child"),t===n-1&&i("last-child"),(t===0||t%2===0)&&i("even"),Math.abs(t%2)===1&&i("odd"),i("nth-child",t),r};JD.default=tAe;Object.defineProperty(Wa,"__esModule",{value:!0});Wa.ReactCSS=Wa.loop=Wa.handleActive=eI=Wa.handleHover=Wa.hover=void 0;var nAe=c_,rAe=eg(nAe),iAe=f_,aAe=eg(iAe),oAe=p_,sAe=eg(oAe),lAe=g_,wV=eg(lAe),cAe=m_,uAe=eg(cAe),dAe=JD,fAe=eg(dAe);function eg(e){return e&&e.__esModule?e:{default:e}}Wa.hover=wV.default;var eI=Wa.handleHover=wV.default;Wa.handleActive=uAe.default;Wa.loop=fAe.default;var pAe=Wa.ReactCSS=function(t){for(var n=arguments.length,r=Array(n>1?n-1:0),i=1;is?p=1:p=Math.round(f*100/s)/100,n.a!==p)return{h:n.h,s:n.s,l:n.l,a:p,source:"rgb"}}else{var m=void 0;if(u<0?m=0:u>o?m=1:m=Math.round(u*100/o)/100,i!==m)return{h:n.h,s:n.s,l:n.l,a:m,source:"rgb"}}return null},a1={},mAe=function(t,n,r,i){if(typeof document>"u"&&!i)return null;var a=i?new i:document.createElement("canvas");a.width=r*2,a.height=r*2;var o=a.getContext("2d");return o?(o.fillStyle=t,o.fillRect(0,0,a.width,a.height),o.fillStyle=n,o.fillRect(0,0,r,r),o.translate(r,r),o.fillRect(0,0,r,r),a.toDataURL()):null},hAe=function(t,n,r,i){var a=t+"-"+n+"-"+r+(i?"-server":"");if(a1[a])return a1[a];var o=mAe(t,n,r,i);return a1[a]=o,o},N3=Object.assign||function(e){for(var t=1;t-1},xAe=function(t){return Number(String(t).replace(/%/g,""))},DAe=1,Zt=function(e){RAe(t,e);function t(n){TAe(this,t);var r=CAe(this,(t.__proto__||Object.getPrototypeOf(t)).call(this));return r.handleBlur=function(){r.state.blurValue&&r.setState({value:r.state.blurValue,blurValue:null})},r.handleChange=function(i){r.setUpdatedValue(i.target.value,i)},r.handleKeyDown=function(i){var a=xAe(i.target.value);if(!isNaN(a)&&OAe(i.keyCode)){var o=r.getArrowOffset(),s=i.keyCode===OV?a+o:a-o;r.setUpdatedValue(s,i)}},r.handleDrag=function(i){if(r.props.dragLabel){var a=Math.round(r.props.value+i.movementX);a>=0&&a<=r.props.dragMax&&r.props.onChange&&r.props.onChange(r.getValueObjectWithLabel(a),i)}},r.handleMouseDown=function(i){r.props.dragLabel&&(i.preventDefault(),r.handleDrag(i),window.addEventListener("mousemove",r.handleDrag),window.addEventListener("mouseup",r.handleMouseUp))},r.handleMouseUp=function(){r.unbindEventListeners()},r.unbindEventListeners=function(){window.removeEventListener("mousemove",r.handleDrag),window.removeEventListener("mouseup",r.handleMouseUp)},r.state={value:String(n.value).toUpperCase(),blurValue:String(n.value).toUpperCase()},r.inputId="rc-editable-input-"+DAe++,r}return SAe(t,[{key:"componentDidUpdate",value:function(r,i){this.props.value!==this.state.value&&(r.value!==this.props.value||i.value!==this.state.value)&&(this.input===document.activeElement?this.setState({blurValue:String(this.props.value).toUpperCase()}):this.setState({value:String(this.props.value).toUpperCase(),blurValue:!this.state.blurValue&&String(this.props.value).toUpperCase()}))}},{key:"componentWillUnmount",value:function(){this.unbindEventListeners()}},{key:"getValueObjectWithLabel",value:function(r){return yAe({},this.props.label,r)}},{key:"getArrowOffset",value:function(){return this.props.arrowOffset||NAe}},{key:"setUpdatedValue",value:function(r,i){var a=this.props.label?this.getValueObjectWithLabel(r):r;this.props.onChange&&this.props.onChange(a,i),this.setState({value:r})}},{key:"render",value:function(){var r=this,i=It({default:{wrap:{position:"relative"}},"user-override":{wrap:this.props.style&&this.props.style.wrap?this.props.style.wrap:{},input:this.props.style&&this.props.style.input?this.props.style.input:{},label:this.props.style&&this.props.style.label?this.props.style.label:{}},"dragLabel-true":{label:{cursor:"ew-resize"}}},{"user-override":!0},this.props);return z.createElement("div",{style:i.wrap},z.createElement("input",{id:this.inputId,style:i.input,ref:function(o){return r.input=o},value:this.state.value,onKeyDown:this.handleKeyDown,onChange:this.handleChange,onBlur:this.handleBlur,placeholder:this.props.placeholder,spellCheck:"false"}),this.props.label&&!this.props.hideLabel?z.createElement("label",{htmlFor:this.inputId,style:i.label,onMouseDown:this.handleMouseDown},this.props.label):null)}}]),t}(x.PureComponent||x.Component),IAe=function(t,n,r,i){var a=i.clientWidth,o=i.clientHeight,s=typeof t.pageX=="number"?t.pageX:t.touches[0].pageX,l=typeof t.pageY=="number"?t.pageY:t.touches[0].pageY,c=s-(i.getBoundingClientRect().left+window.pageXOffset),u=l-(i.getBoundingClientRect().top+window.pageYOffset);if(n==="vertical"){var f=void 0;if(u<0)f=359;else if(u>o)f=0;else{var p=-(u*100/o)+100;f=360*p/100}if(r.h!==f)return{h:f,s:r.s,l:r.l,a:r.a,source:"hsl"}}else{var m=void 0;if(c<0)m=0;else if(c>a)m=359;else{var v=c*100/a;m=360*v/100}if(r.h!==m)return{h:m,s:r.s,l:r.l,a:r.a,source:"hsl"}}return null},MAe=function(){function e(t,n){for(var r=0;r{const e=cg(),t=s_(),{showEdges:n}=lo(),{metadata:r}=Nr(),{theme:i}=Hc(),{emphasizedNodes:a,emphasizedEdges:o,hoveredNode:s,highlightedNodes:l}=G7();return x.useEffect(()=>{const c=e.getGraph(),u=r.type!=="undirected",f=fy(i),p=a||new Set([...t.type==="nodes"?Array.from(t.items):[],...s?[s,...c.neighbors(s)]:[]]),m=a?new Set(c.filterEdges((E,S,b,T)=>a.has(b)&&a.has(T))):o||new Set([...t.type==="edges"?Array.from(t.items):[],...s?c.edges(s):[]]),v=!!p.size,_=!!m.size;e.setSetting("nodeReducer",(E,S)=>{const b=structuredClone(S);return b.zIndex=0,b.rawSize=b.size||q8,v&&!p.has(E)&&(b.hideLabel=!0,b.borderColor=b.color,b.color=f==="dark"?b5(b.color||Du):E5(b.color||Du),b.zIndex=-1,b.type="bordered"),(E===s||l!=null&&l.has(E))&&(b.highlighted=!0),p.has(E)&&(b.forceLabel=!0,b.zIndex=1),b}),e.setSetting("edgeReducer",n?(E,{weight:S,...b})=>{const T={...b,size:S,type:u?"arrow":"line"};return T.zIndex=0,T.rawSize=T.size||Y8,_&&!m.has(E)&&(T.color=f==="dark"?b5(T.color||Ah):E5(T.color||Ah),T.zIndex=-1),T}:()=>({hidden:!0}))},[o,a,s,t,n,e,r.type,l,i]),null},c9e=3,u9e=()=>{const e=cg(),t=$j(),n=s_(),{setNodePositions:r}=zo(),{select:i,toggle:a,reset:o}=Xu(),{setHoveredNode:s,resetHoveredNode:l,setHoveredEdge:c,resetHoveredEdge:u}=z7(),f=x.useRef({type:"idle"}),p=x.useRef(0);return x.useEffect(()=>{t({enterEdge({edge:m}){f.current.type==="idle"&&c(m)},leaveEdge(){f.current.type==="idle"&&u()},enterNode({node:m}){f.current.type==="idle"&&s(m)},leaveNode(){f.current.type==="idle"&&l()},clickNode({node:m,event:v}){p.current>=c9e||(v.original.ctrlKey?a({type:"nodes",item:m}):n.type==="nodes"&&n.items.has(m)&&n.items.size===1?o():i({type:"nodes",items:new Set([m]),replace:!0}))},clickEdge({edge:m,event:v}){v.original.ctrlKey?a({type:"edges",item:m}):n.type==="edges"&&n.items.has(m)&&n.items.size===1?o():i({type:"edges",items:new Set([m]),replace:!0})},doubleClick(m){m.preventSigmaDefault()},downNode:({node:m,event:v})=>{const _=e.getGraph(),E=n.type==="nodes"&&n.items.has(m)?Array.from(n.items):[m],{x:S,y:b}=e.viewportToGraph(v),T={};E.forEach(C=>{_.setNodeAttribute(C,"fixed",!0);const{x:R,y:O}=_.getNodeAttributes(C);T[C]={x:R,y:O}}),p.current=0,f.current={type:"dragging",initialNodesPosition:T,initialMousePosition:{x:S,y:b}}},clickStage(m){m.event.original.ctrlKey||o()},mouseup:()=>{const m=f.current;if(m.type==="dragging"){const v=e.getGraph();v.forEachNode(E=>v.setNodeAttribute(E,"fixed",!1));const _=Se.mapValues(m.initialNodesPosition,(E,S)=>Se.pick(v.getNodeAttributes(S),["x","y"]));r(_),f.current={type:"idle"},l(),u()}},mousemovebody:m=>{const v=f.current;if(v.type==="dragging"){p.current++;const _=e.getGraph(),E=e.viewportToGraph(m),S={x:E.x-v.initialMousePosition.x,y:E.y-v.initialMousePosition.y};for(const b in v.initialNodesPosition){const T=v.initialNodesPosition[b];_.setNodeAttribute(b,"x",T.x+S.x),_.setNodeAttribute(b,"y",T.y+S.y)}m.preventSigmaDefault(),m.original.preventDefault()}}})},[t,o,u,l,i,n,c,s,e,a,r]),x.useEffect(()=>{const m=()=>{f.current.type==="idle"&&(l(),u())},v=e.getContainer();return v.addEventListener("mouseleave",m),()=>{v.removeEventListener("mouseleave",m)}},[u,l,e]),null};var d9e=pn,f9e=function(t){if(!d9e(t))throw new Error("graphology-metrics/simple-size: the given graph is not a valid graphology instance.");if(!t.multi)return t.size;var n=0,r=0;function i(){n++}function a(){r++}return t.forEachNode(function(o){t.type!=="directed"&&t.forEachUndirectedNeighbor(o,i),t.type!=="undirected"&&t.forEachOutNeighbor(o,a)}),n/2+r},p9e=pn,g9e=f9e;function m9e(e,t){return 2*t/(e*(e-1))}function h9e(e,t){return t/(e*(e-1))}function _9e(e,t){var n=e*(e-1);return t/(n+n/2)}function sd(e,t,n){var r,i;if(arguments.length>3){if(r=n,i=arguments[3],typeof r!="number"||r<0)throw new Error("graphology-metrics/density: given order is not a valid number.");if(typeof i!="number"||i<0)throw new Error("graphology-metrics/density: given size is not a valid number.")}else{if(!p9e(n))throw new Error("graphology-metrics/density: given graph is not a valid graphology instance.");r=n.order,i=n.size,n.multi&&t===!1&&(i=g9e(n))}if(r<2)return 0;e===null&&(e=n.type),t===null&&(t=n.multi);var a;return e==="undirected"?a=m9e:e==="directed"?a=h9e:a=_9e,a(r,i)}sd.bind(null,null,null);sd.bind(null,"directed",!1);sd.bind(null,"undirected",!1);sd.bind(null,"mixed",!1);sd.bind(null,"directed",!0);sd.bind(null,"undirected",!0);sd.bind(null,"mixed",!0);var bM={},Kj=pn;function v9e(e,t){if(!Kj(e))throw new Error("graphology-metrics/extent: the given graph is not a valid graphology instance.");var n=[].concat(t),r,i,a,o={};for(a=0;ao[i][1]&&(o[i][1]=r)}),typeof t=="string"?o[t]:o}function E9e(e,t){if(!Kj(e))throw new Error("graphology-metrics/extent: the given graph is not a valid graphology instance.");var n=[].concat(t),r,i,a,o={};for(a=0;ao[i][1]&&(o[i][1]=r)}),typeof t=="string"?o[t]:o}bM.nodeExtent=v9e;bM.edgeExtent=E9e;var Qj=na,Xj=pn,Zj=uy,kc=so,Jj={getNodeCommunity:"community",getEdgeWeight:"weight",resolution:1};function b9e(e,t){var n=new Array(e.order),r=new Float64Array(e.order),i={},a=0,o=kc.createEdgeWeightGetter(t.getEdgeWeight).fromEntry,s=kc.createNodeValueGetter(t.getNodeCommunity).fromEntry,l=0,c={};return e.forEachNode(function(u,f){c[u]=l,n[l++]=s(u,f)}),e.forEachUndirectedEdge(function(u,f,p,m,v,_,E){var S=o(u,f,p,m,v,_,E);a+=S,i[u]=S,r[c[p]]+=S,p!==m&&(r[c[m]]+=S)}),{weights:i,communities:n,weightedDegrees:r,M:a}}function S9e(e,t){var n=new Array(e.order),r=new Float64Array(e.order),i=new Float64Array(e.order),a={},o=0,s=kc.createEdgeWeightGetter(t.getEdgeWeight).fromEntry,l=kc.createNodeValueGetter(t.getNodeCommunity).fromEntry,c=0,u={};return e.forEachNode(function(f,p){u[f]=c,n[c++]=l(f,p)}),e.forEachDirectedEdge(function(f,p,m,v,_,E,S){var b=s(f,p,m,v,_,E,S);o+=b,a[f]=b,i[u[m]]+=b,r[u[v]]+=b}),{weights:a,communities:n,weightedInDegrees:r,weightedOutDegrees:i,M:o}}function y9e(e,t){var n=t.resolution,r=b9e(e,t),i=r.communities,a=r.weightedDegrees,o=r.M,s=e.nodes(),l,c,u,f,p,m,v=0,_=o*2;for(l=0,u=e.order;l"u")throw new Error('graphology-metrics/modularity: the "'+o+'" node is not in the partition.');r[l]=0,i[l]=0}),{communities:n,totalWeights:r,internalWeights:i}}function R9e(e,t){var n={},r={},i={},a={},o=kc.createNodeValueGetter(t.getNodeCommunity).fromEntry;return e.forEachNode(function(s,l){var c=o(s,l);if(n[s]=c,typeof c>"u")throw new Error('graphology-metrics/modularity: the "'+s+'" node is not in the partition.');r[c]=0,i[c]=0,a[c]=0}),{communities:n,totalInWeights:r,totalOutWeights:i,internalWeights:a}}function N9e(e,t){var n=t.resolution,r=C9e(e,t),i=0,a=r.totalWeights,o=r.internalWeights,s=r.communities,l=kc.createEdgeWeightGetter(t.getEdgeWeight).fromEntry;e.forEachUndirectedEdge(function(p,m,v,_,E,S,b){var T=l(p,m,v,_,E,S,b);i+=T;var C=s[v],R=s[_];a[C]+=T,a[R]+=T,C===R&&(o[C]+=T*2)});var c=0,u=i*2;for(var f in o)c+=o[f]/u-Math.pow(a[f]/u,2)*n;return c}function A9e(e,t){var n=t.resolution,r=R9e(e,t),i=0,a=r.totalInWeights,o=r.totalOutWeights,s=r.internalWeights,l=r.communities,c=kc.createEdgeWeightGetter(t.getEdgeWeight).fromEntry;e.forEachDirectedEdge(function(p,m,v,_,E,S,b){var T=c(p,m,v,_,E,S,b);i+=T;var C=l[v],R=l[_];o[C]+=T,a[R]+=T,C===R&&(s[C]+=T)});var u=0;for(var f in s)u+=s[f]/i-a[f]*o[f]/Math.pow(i,2)*n;return u}function w9e(e,t,n,r){return r/(2*e)-t*n/(2*(e*e))}function O9e(e,t,n,r,i,a){return a/e-(i*t+r*n)/(e*e)}function x9e(e,t){if(!Xj(e))throw new Error("graphology-metrics/modularity: given graph is not a valid graphology instance.");if(e.size===0)throw new Error("graphology-metrics/modularity: cannot compute modularity of an empty graph.");if(e.multi)throw new Error("graphology-metrics/modularity: cannot compute modularity of a multi graph. Cast it to a simple one beforehand.");var n=Zj(e);if(n==="mixed")throw new Error("graphology-metrics/modularity: cannot compute modularity of a mixed graph.");return t=Qj(t,Jj),n==="directed"?T9e(e,t):y9e(e,t)}function eW(e,t){if(!Xj(e))throw new Error("graphology-metrics/modularity: given graph is not a valid graphology instance.");if(e.size===0)throw new Error("graphology-metrics/modularity: cannot compute modularity of an empty graph.");if(e.multi)throw new Error("graphology-metrics/modularity: cannot compute modularity of a multi graph. Cast it to a simple one beforehand.");var n=Zj(e);if(n==="mixed")throw new Error("graphology-metrics/modularity: cannot compute modularity of a mixed graph.");return t=Qj(t,Jj),n==="directed"?A9e(e,t):N9e(e,t)}var u0=eW;u0.sparse=eW;u0.dense=x9e;u0.undirectedDelta=w9e;u0.directedDelta=O9e;so.createEdgeWeightGetter;var D9e=bM,I9e=D9e.nodeExtent;const PE=.05,Ew=50,M9e=({size:e,opacity:t,color:n})=>{const r=cg(),i=x.useRef(null),a=x.useRef(void 0),o=x.useRef(e),s=x.useRef(t),l=x.useCallback(()=>{const f=e*PE+o.current*(1-PE),p=t*PE+s.current*(1-PE);return Math.abs((f-e)/e)>=.01?(o.current=f,s.current=p,!0):(o.current=e,s.current=t,!1)},[e,t]),c=x.useCallback(()=>{a.current&&(window.clearTimeout(a.current),a.current=void 0);const f=l(),p=o.current,m=s.current,v=i.current,_=v==null?void 0:v.getContext("2d");if(!_)return;const{angle:E}=r.getCamera().getState(),{x:S,y:b}=I9e(r.getGraph(),["x","y"]),T=r.graphToViewport({x:Se.mean(S),y:Se.mean(b)});let{width:C,height:R}=r.getDimensions();const O=Wb();C*=O,R*=O,T.x*=O,T.y*=O;const N=Math.sqrt(C**2+R**2)/2,L=p*r.getGraphToViewportRatio(),I=L>Ew?m:m*(L-Ew/2)/(Ew/2);if(_.clearRect(0,0,C,R),!(I<=0)){_.save(),_.translate(T.x,T.y),_.rotate(E),_.translate(-T.x,-T.y),_.translate(T.x,T.y),_.translate(L*Math.round((C/2-T.x)/L),L*Math.round((R/2-T.y)/L)),_.globalAlpha=I,_.strokeStyle=n,_.lineWidth=.5;for(let F=L/2;F<=N;F+=L)for(let ee=-1;ee<=1;ee+=2)_.beginPath(),_.moveTo(F*ee,-N),_.lineTo(F*ee,N),_.stroke(),_.beginPath(),_.moveTo(-N,F*ee),_.lineTo(N,F*ee),_.stroke();_.restore(),f&&(a.current=window.setTimeout(c,30))}},[n,r,l]),u=x.useCallback(()=>{const f=i.current;if(!f)return;const{width:p,height:m}=r.getDimensions(),v=Wb();f.style.width=p+"px",f.style.height=m+"px",f.setAttribute("width",p*v+"px"),f.setAttribute("height",m*v+"px")},[r]);return x.useEffect(()=>{if(r)return u(),c(),r.on("resize",u),r.on("afterRender",c),()=>{r.off("resize",u),r.off("afterRender",c)}},[r,u,c]),h.jsx("canvas",{ref:i,className:"position-absolute inset-0 graph-layout-grid"})},L9e=({firstCorner:e,lastCorner:t})=>{const n=Math.min(e.x,t.x),r=Math.min(e.y,t.y),i=Math.abs(e.x-t.x),a=Math.abs(e.y-t.y);return h.jsx("div",{style:{position:"absolute",inset:0},children:h.jsx("svg",{width:"100%",height:"100%",children:h.jsx("rect",{x:n,y:r,width:i,height:a,stroke:"grey",fill:"transparent",strokeWidth:2,strokeDasharray:6})})})},k9e=()=>{const e=cg(),t=$j(),[n,r]=x.useState({type:"idle"}),i=s_(),{select:a}=Xu(),{setEmphasizedNodes:o}=z7(),s=x.useCallback(()=>{e.getCamera().enable(),r({type:"idle"}),o(null)},[e,o]);return x.useEffect(()=>{const l=u=>{n.type!=="idle"&&(u.key==="Escape"&&s(),u.key==="Control"&&(r(f=>({...f,ctrlKeyDown:!0})),o(new Set(n.capturedNodes.concat(Array.from(i.items))))))},c=u=>{n.type!=="idle"&&u.key==="Control"&&(r(f=>({...f,ctrlKeyDown:!1})),o(new Set(n.capturedNodes)))};return window.document.body.addEventListener("keydown",l),window.document.body.addEventListener("keyup",c),()=>{window.document.body.removeEventListener("keydown",l),window.document.body.removeEventListener("keyup",c)}},[s,i,n,o]),x.useEffect(()=>{t({mousemovebody:l=>{if(n.type==="marquee"){const c=Se.pick(l,"x","y"),u=e.getGraph(),f=e.viewportToGraph(n.startCorner),p=e.viewportToGraph(c),m=Math.min(f.x,p.x),v=Math.min(f.y,p.y),_=Math.max(f.x,p.x),E=Math.max(f.y,p.y),S=u.filterNodes((b,{x:T,y:C})=>{const R=e.getNodeDisplayData(b).size;return!(T+R_||C+RE)});o(new Set(S.concat(n.ctrlKeyDown&&i.type==="nodes"?Array.from(i.items):[]))),r({...n,mouseCorner:c,capturedNodes:S})}},doubleClickStage:l=>{if(l.preventSigmaDefault(),n.type==="idle"){const c=Se.pick(l.event,"x","y");r({type:"marquee",startCorner:c,mouseCorner:c,ctrlKeyDown:l.event.original.ctrlKey,capturedNodes:[]}),e.getCamera().disable()}},click:()=>{n.type!=="idle"&&(a({items:new Set(n.capturedNodes),type:"nodes",replace:!n.ctrlKeyDown}),s())}})},[t,e,n,i,s,o,a]),n.type==="marquee"?h.jsx(L9e,{firstCorner:n.startCorner,lastCorner:n.mouseCorner}):null},P9e=.1,F9e=10;function U9e(e){return e<=P9e?1/0:e>=F9e?0:6/e}const B9e=({setIsReady:e})=>{const t=cg(),n=Nr(),r=lo(),{theme:i}=Hc();return x.useEffect(()=>{i_.set(t),a_({forceRefresh:!0})},[t]),x.useEffect(()=>{const a=fy(i);t.setSetting("labelColor",{color:a==="dark"?"#FFF":"#000"}),t.setSetting("edgeLabelColor",{color:a==="dark"?"#495057":"#CCC"}),t.setSetting("nodeHoverBackgoundColor",a==="dark"?"#000":"#FFF"),t.setSetting("renderEdgeLabels",r.edgesLabel.type!=="none"),t.setSetting("defaultDrawNodeLabel",iP(r,py)),t.setSetting("defaultDrawNodeHover",iP(r,Npe)),t.setSetting("defaultDrawEdgeLabel",Uie(r,VH));const o=U9e(r.nodesLabelSize.density),s=o===0?1/0:QH.labelDensity;t.setSetting("labelRenderedSizeThreshold",o),t.setSetting("labelDensity",s),e()},[r,n,e,t,i]),null};function G9e(){const[e,t]=x.useState(!1),n=document.body;return x.useEffect(()=>{const i=()=>t(a=>!a);return document.addEventListener("fullscreenchange",i),()=>document.removeEventListener("fullscreenchange",i)},[]),{toggle:x.useCallback(()=>{document.fullscreenElement!==n?n.requestFullscreen():document.exitFullscreen&&document.exitFullscreen()},[n]),isFullScreen:e}}const $9e=()=>{const{t:e}=lt(),{isFullScreen:t,toggle:n}=G9e(),r=LD(),i="btn btn-ico btn-dark btn-sm mt-1",a={duration:200,factor:1.5};return h.jsxs("div",{className:"position-absolute d-flex flex-column sigma-controls",style:{right:10,bottom:10},children:[h.jsx("button",{className:i,onClick:()=>r.getCamera().animatedZoom(a),title:e("graph.control.zoomIn").toString(),children:h.jsx(Dre,{})}),h.jsx("button",{className:i,onClick:()=>r.getCamera().animatedUnzoom(a),title:e("graph.control.zoomOut").toString(),children:h.jsx(Ire,{})}),h.jsx("button",{className:i,onClick:()=>a_({forceRefresh:!0,source:"sigma"}),title:e("graph.control.zoomReset").toString(),children:h.jsx(Rie,{})}),h.jsx("button",{className:i,onClick:()=>n(),title:t?e("graph.control.fullscreenExit").toString():e("graph.control.fullscreenEnter").toString(),children:t?h.jsx(wIe,{}):h.jsx(OIe,{})})]})},z9e=()=>h.jsx("div",{className:"position-absolute sigma-controls",style:{left:10,bottom:10,marginRight:"4em"},children:h.jsx(i9e,{minimal:!0})}),H9e=()=>{var f,p;const{backgroundColor:e,layoutGridColor:t}=lo(),n=$7(),{quality:r}=Ey(),{hoveredNode:i,hoveredEdge:a}=G7(),[o,s]=x.useState(!1),l=x.useCallback(()=>{s(!0)},[s]),c=x.useMemo(()=>EM({size:{mode:"max",value:256}}),[]),u=x.useMemo(()=>({labelFont:"Poppins, Arial, Helvetica, Geneva",edgeLabelFont:"Poppins, Arial, Helvetica, Geneva",enableEdgeEvents:!0,renderEdgeLabels:!0,zIndex:!0,itemSizesReference:"positions",zoomToSizeRatioFunction:m=>m,defaultNodeType:"image",nodeProgramClasses:{image:c,bordered:kx},allowInvalidContainer:!0}),[c]);return h.jsxs(h.Fragment,{children:[h.jsxs(M8e,{className:gt("position-absolute inset-0",!o&&"visually-hidden",(i||a)&&"cursor-pointer"),style:{backgroundColor:e},graph:n,settings:u,children:[h.jsx(u9e,{}),h.jsx(l9e,{}),h.jsx(B9e,{setIsReady:l}),h.jsxs("div",{className:"sigma-layers",children:[r.enabled&&r.showGrid&&((f=r.metric)==null?void 0:f.deltaMax)&&h.jsx(M9e,{size:r.metric.deltaMax,opacity:((p=r.metric)==null?void 0:p.cMax)||0,color:t}),h.jsx(k9e,{})]})]}),h.jsx($9e,{}),h.jsx(z9e,{})]})},V9e=()=>{const{t:e}=lt(),{quality:t}=ys.get(),{setQuality:n}=q7();return h.jsxs("div",{className:"panel-block",children:[e("layouts.quality.title"),h.jsxs("p",{className:"text-muted small d-none d-md-block",children:[e("layouts.quality.description")," ",h.jsx("a",{href:"https://jgaa.info/index.php/jgaa/article/view/paper626",children:"(Jacomy 2023)"})]}),h.jsxs("div",{className:"form-check",children:[h.jsx("input",{className:"form-check-input",id:"qualityEnabled",checked:t.enabled,type:"checkbox",onChange:r=>n({...t,enabled:r.target.checked})}),h.jsx("label",{htmlFor:"qualityEnabled",children:e("layouts.quality.enable")})]}),h.jsxs("div",{className:"form-check",children:[h.jsx("input",{className:"form-check-input",id:"qualityGrid",checked:t.showGrid,type:"checkbox",onChange:r=>n({...t,showGrid:r.target.checked})}),h.jsx("label",{htmlFor:"qualityGrid",children:e("layouts.quality.showGrid")})]})]})},q9e=({layout:e,onStart:t,onStop:n,isRunning:r})=>{var C;const{t:i}=lt(),{openModal:a}=Ji(),o=Nr(),s=$7(),{nodeFields:l,edgeFields:c}=o,[u,f]=x.useState(null),[p,m]=Pp(qp),v=x.useMemo(()=>p.layoutsParameters[e.id]||{},[e.id,p.layoutsParameters]),_=x.useMemo(()=>e.parameters.reduce((R,O)=>({...R,[O.id]:Se.isNil(O.defaultValue)?void 0:O.defaultValue}),{}),[e]);x.useEffect(()=>{m(R=>({...R,layoutsParameters:{...R.layoutsParameters,[e.id]:{..._,...R.layoutsParameters[e.id]||{}}}}))},[e,_,m]);const E=x.useCallback((R,O)=>{m(N=>({...N,layoutsParameters:{...N.layoutsParameters,[e.id]:{...N.layoutsParameters[e.id]||{},[R]:O}}}))},[e.id,m]),S=x.useCallback(R=>{m(O=>({...O,layoutsParameters:{...O.layoutsParameters,[e.id]:Se.isNil(R)?_:R}}))},[e.id,_,m]),b=x.useCallback(R=>{f(typeof R=="string"?{date:Date.now(),message:R}:null)},[]),T=x.useCallback(()=>{if(r)n();else try{t(v),e.type==="sync"&&b(i("layouts.exec.success",{layout:i(`layouts.${e.id}.title`)}))}catch(R){console.error(R)}},[r,e.id,e.type,v,t,n,b,i]);return h.jsxs("form",{className:"panel-wrapper",onSubmit:R=>{R.preventDefault(),T()},noValidate:!0,children:[h.jsxs("div",{className:"panel-block-grow",children:[h.jsx("h3",{className:"fs-5",children:i(`layouts.${e.id}.title`)}),e.description&&h.jsx("p",{className:"text-muted small",children:i(`layouts.${e.id}.description`)}),e.parameters.map(R=>{const O=v[R.id],N=`layouts-${e.id}-params-${R.id})}`;return h.jsxs("div",{className:"my-1",children:[R.type==="number"&&h.jsx(_Y,{id:N,label:i(`layouts.${e.id}.parameters.${R.id}.title`),description:R.description?i(`layouts.${e.id}.parameters.${R.id}.description`):void 0,value:O,disabled:r,onChange:L=>E(R.id,L),required:R.required||!1,min:R.min,max:R.max,step:R.step}),R.type==="boolean"&&h.jsx(vY,{id:N,label:i(`layouts.${e.id}.parameters.${R.id}.title`),description:R.description?i(`layouts.${e.id}.parameters.${R.id}.description`):void 0,value:!!O,disabled:r,onChange:L=>E(R.id,L),required:R.required||!1}),R.type==="attribute"&&h.jsx(hx,{id:N,label:i(`layouts.${e.id}.parameters.${R.id}.title`),required:R.required,description:R.description?i(`layouts.${e.id}.parameters.${R.id}.description`):void 0,placeholder:i("common.none"),value:O,disabled:r,onChange:L=>E(R.id,L),options:(R.itemType==="nodes"?l:c).filter(L=>R.restriction?!!L[R.restriction]:!0).map(L=>({value:L.id,label:L.id}))}),R.type==="script"&&h.jsx("div",{className:"position-relative",children:h.jsxs(h.Fragment,{children:[O&&h.jsxs(h.Fragment,{children:[h.jsx("div",{className:"code-thumb mt-1",style:{height:"auto",maxHeight:"auto"},children:h.jsx(pM,{className:"javascript",children:O.toString()})}),h.jsx("div",{className:"filler-fade-out position-absolute bottom-0"})]}),h.jsx("div",{className:gt(O?"bottom-0 position-absolute w-100":""),children:h.jsxs("button",{type:"button",className:"btn btn-dark mx-auto d-block m-3",onClick:()=>a({component:gM,arguments:{title:"Custom layout",withSaveAndRun:!0,functionJsDoc:R.functionJsDoc,defaultFunction:R.defaultValue,value:O,checkFunction:R.functionCheck},beforeSubmit:({run:L,script:I})=>{E(R.id,I),L&&setTimeout(T,0)}}),title:i("common.open_code_editor").toString(),children:[h.jsx(JS,{className:"me-1"}),i("common.open_code_editor")]})})]})})]},N)}),r&&h.jsx(wY,{})]}),h.jsx("hr",{className:"m-0"}),h.jsxs("div",{className:"z-over-loader panel-block d-flex flex-row gap-1 flex-wrap align-items-center justify-content-end",children:[u&&h.jsx(VI,{openOnMount:2e3,message:u.message,type:"success",iconClassName:"fs-4"},u.date),h.jsx("div",{className:"flex-grow-1"}),(C=e.buttons)==null?void 0:C.map(({id:R,description:O,getSettings:N})=>h.jsx("button",{type:"reset",className:"btn text-nowrap mt-1 btn-secondary",title:O?i(`layouts.${e.id}.buttons.${R}.description`):void 0,onClick:()=>{const L=Loe(o,s);S(N(v,L))},disabled:r,children:i(`layouts.${e.id}.buttons.${R}.title`)},R)),h.jsx("button",{type:"reset",className:"btn text-nowrap mt-1 btn-secondary",onClick:()=>S(),disabled:r,children:i("common.reset")}),h.jsxs("button",{type:"submit",className:"btn text-nowrap mt-1 btn-primary",children:[e.type==="sync"&&h.jsx(h.Fragment,{children:i("common.apply")}),e.type==="worker"&&h.jsx(h.Fragment,{children:r?h.jsxs(h.Fragment,{children:[h.jsx(yie,{className:"me-1"}),i("common.stop")]}):h.jsxs(h.Fragment,{children:[h.jsx(Sie,{className:"me-1"}),i("common.start")]})})]})]})]})},Y9e=()=>{const{t:e}=lt(),{notify:t}=hi(),{startLayout:n,stopLayout:r}=q7(),{type:i}=Ey(),a=x.useMemo(()=>F7.map(l=>({value:l.id,label:e(`layouts.${l.id}.title`),layout:l})),[e]),[o,s]=x.useState(null);return h.jsxs(h.Fragment,{children:[h.jsxs("div",{className:"panel-block",children:[h.jsxs("h2",{className:"fs-4 d-flex align-items-center gap-1",children:[h.jsx(k2,{className:"me-1"})," ",e("layouts.title"),h.jsx(mM,{children:h.jsx("p",{className:"text-muted small",children:e("layouts.description")})})]}),h.jsx("p",{className:"text-muted small d-none d-md-block",children:e("layouts.description")}),h.jsx(ro,{...Go,options:a,value:o,onChange:l=>{s(l),r()},placeholder:e("layouts.placeholder")})]}),o!=null&&o.layout?h.jsxs(h.Fragment,{children:[h.jsx("hr",{className:"m-0"}),h.jsx(q9e,{layout:o.layout,onStart:async l=>{try{await n(o.layout.id,l)}catch(c){t({type:"error",message:c.message})}},onStop:()=>{r()},isRunning:i==="running",onCancel:()=>{r(),s(null)}},o.layout.id)]}):h.jsx("div",{className:"flex-grow-1"}),h.jsx("hr",{className:"m-0"}),h.jsx(V9e,{})]})};function j9e(e,t,n,r,i){const a=vl(i,r),o=e.fn(t,a),s={},l=e.itemType==="nodes"?"nodeData":"edgeData",c=i[l],u=e.itemType==="nodes"?i.fullGraph.order:i.fullGraph.size,f=[];for(const p in o){const m=o[p],v=n[p];if(!v)throw new Error("missing_attribute_name");for(const E in m)c[E][v]=m[E];let _=e.outputs[p];_===void 0&&(_=NO(Object.values(m),u)),f.push({id:v,itemType:e.itemType,..._})}return{report:s,fieldModels:f}}var W9e=pn,K9e=uy,Q9e=na,X9e=so.createEdgeWeightGetter,Z9e={edgeDisparityAttribute:"disparity",getEdgeWeight:"weight"};function tW(e,t,n){if(!W9e(t))throw new Error("graphology-metrics/edge/disparity: the given graph is not a valid graphology instance.");if(t.multi||K9e(t)==="mixed")throw new Error("graphology-metrics/edge/disparity: not defined for multi nor mixed graphs.");n=Q9e(n,Z9e);var r=X9e(n.getEdgeWeight).fromEntry,i={};t.forEachNode(function(c){i[c]=0}),t.forEachEdge(function(c,u,f,p,m,v,_){var E=r(c,u,f,p,m,v,_);i[f]+=E,i[p]+=E});var a,o,s,l={};if(t.forEachAssymetricAdjacencyEntry(function(c,u,f,p,m,v,_){var E=r(m,v,c,u,f,p,_);a!==c&&(a=c,o=t.degree(c),s=i[c]);var S=t.degree(u),b=i[u],T=E/s,C=E/b,R=Math.pow(1-T,o-1),O=Math.pow(1-C,S-1);l[m]=Math.min(R,O)}),e){t.updateEachEdgeAttributes(function(c,u){return u[n.edgeDisparityAttribute]=l[c],u},{attributes:[n.edgeDisparityAttribute]});return}return l}var nW=tW.bind(null,!1);nW.assign=tW.bind(null,!0);var J9e=nW,eHe=pn,tz=CD.intersectionSize;function rW(e,t){if(!eHe(t))throw new Error("graphology-metrics/simmelian-strength: given graph is not a valid graphology instance.");var n={};if(t.forEachNode(function(i){n[i]=new Set(t.neighbors(i))}),!e){var r={};return t.forEachEdge(function(i,a,o,s){r[i]=tz(n[o],n[s])}),r}t.updateEachEdgeAttributes(function(i,a,o,s){return a.simmelianStrength=tz(n[o],n[s]),a},{attributes:["simmelianStrength"]})}var iW=rW.bind(null,!1);iW.assign=rW.bind(null,!0);var tHe=iW,nHe=J9e,rHe=tHe;const Hu={quantitative:{unit:null},qualitative:null},iHe={quantitative:null,qualitative:{separator:null}},aHe={id:"disparity",itemType:"edges",outputs:{disparity:Hu},parameters:[{id:"getEdgeWeight",type:"attribute",itemType:"edges",restriction:"quantitative"}],fn(e,t){return{disparity:nHe(e9(t),e)}}},oHe=new Function(`return ( +`,{UNSIGNED_BYTE:_w,FLOAT:vw}=WebGLRenderingContext,s9e=["u_sizeRatio","u_correctionRatio","u_matrix"],cc=class cc extends gD{getDefinition(){return{VERTICES:3,VERTEX_SHADER_SOURCE:o9e,FRAGMENT_SHADER_SOURCE:a9e,METHOD:WebGLRenderingContext.TRIANGLES,UNIFORMS:s9e,ATTRIBUTES:[{name:"a_position",size:2,type:vw},{name:"a_size",size:1,type:vw},{name:"a_color",size:4,type:_w,normalized:!0},{name:"a_borderColor",size:4,type:_w,normalized:!0},{name:"a_id",size:4,type:_w,normalized:!0}],CONSTANT_ATTRIBUTES:[{name:"a_angle",size:1,type:vw}],CONSTANT_DATA:[[cc.ANGLE_1],[cc.ANGLE_2],[cc.ANGLE_3]]}}processVisibleItem(t,n,r){const i=this.array,a=Ic(r.color),o=Ic(r.borderColor||r.color);i[n++]=r.x,i[n++]=r.y,i[n++]=r.size,i[n++]=a,i[n++]=o,i[n++]=t}setUniforms(t,{gl:n,uniformLocations:r}){const{u_sizeRatio:i,u_correctionRatio:a,u_matrix:o}=r;n.uniform1f(a,t.correctionRatio),n.uniform1f(i,t.sizeRatio),n.uniformMatrix3fv(o,!1,t.matrix)}};Vn(cc,"ANGLE_1",0),Vn(cc,"ANGLE_2",2*Math.PI/3),Vn(cc,"ANGLE_3",4*Math.PI/3);let kx=cc;const l9e=()=>{const e=cg(),t=s_(),{showEdges:n}=lo(),{metadata:r}=Nr(),{theme:i}=Hc(),{emphasizedNodes:a,emphasizedEdges:o,hoveredNode:s,highlightedNodes:l}=G7();return x.useEffect(()=>{const c=e.getGraph(),u=r.type!=="undirected",f=fy(i),p=a||new Set([...t.type==="nodes"?Array.from(t.items):[],...s?[s,...c.neighbors(s)]:[]]),m=a?new Set(c.filterEdges((E,S,b,T)=>a.has(b)&&a.has(T))):o||new Set([...t.type==="edges"?Array.from(t.items):[],...s?c.edges(s):[]]),v=!!p.size,_=!!m.size;e.setSetting("nodeReducer",(E,S)=>{const b=structuredClone(S);return b.zIndex=0,b.rawSize=b.size||q8,v&&!p.has(E)&&(b.hideLabel=!0,b.borderColor=b.color,b.color=f==="dark"?b5(b.color||Du):E5(b.color||Du),b.zIndex=-1,b.type="bordered"),(E===s||l!=null&&l.has(E))&&(b.highlighted=!0),p.has(E)&&(b.forceLabel=!0,b.zIndex=1),b}),e.setSetting("edgeReducer",n.value?(E,{weight:S,...b})=>{const T={...b,size:S,type:u?"arrow":"line"};return T.zIndex=0,T.rawSize=T.size||Y8,_&&!m.has(E)&&(T.color=f==="dark"?b5(T.color||Ah):E5(T.color||Ah),T.zIndex=-1),T}:()=>({hidden:!0}))},[o,a,s,t,n,e,r.type,l,i]),null},c9e=3,u9e=()=>{const e=cg(),t=$j(),n=s_(),{setNodePositions:r}=zo(),{select:i,toggle:a,reset:o}=Xu(),{setHoveredNode:s,resetHoveredNode:l,setHoveredEdge:c,resetHoveredEdge:u}=z7(),f=x.useRef({type:"idle"}),p=x.useRef(0);return x.useEffect(()=>{t({enterEdge({edge:m}){f.current.type==="idle"&&c(m)},leaveEdge(){f.current.type==="idle"&&u()},enterNode({node:m}){f.current.type==="idle"&&s(m)},leaveNode(){f.current.type==="idle"&&l()},clickNode({node:m,event:v}){p.current>=c9e||(v.original.ctrlKey?a({type:"nodes",item:m}):n.type==="nodes"&&n.items.has(m)&&n.items.size===1?o():i({type:"nodes",items:new Set([m]),replace:!0}))},clickEdge({edge:m,event:v}){v.original.ctrlKey?a({type:"edges",item:m}):n.type==="edges"&&n.items.has(m)&&n.items.size===1?o():i({type:"edges",items:new Set([m]),replace:!0})},doubleClick(m){m.preventSigmaDefault()},downNode:({node:m,event:v})=>{const _=e.getGraph(),E=n.type==="nodes"&&n.items.has(m)?Array.from(n.items):[m],{x:S,y:b}=e.viewportToGraph(v),T={};E.forEach(C=>{_.setNodeAttribute(C,"fixed",!0);const{x:R,y:O}=_.getNodeAttributes(C);T[C]={x:R,y:O}}),p.current=0,f.current={type:"downing",initialNodesPosition:T,initialMousePosition:{x:S,y:b}}},clickStage(m){m.event.original.ctrlKey||o()},mouseup:()=>{const m=f.current;if(m.type==="downing"||m.type==="dragging"){const v=e.getGraph();if(m.type==="dragging"){const _=Se.mapValues(m.initialNodesPosition,(E,S)=>Se.pick(v.getNodeAttributes(S),["x","y"]));r(_),l(),u()}v.forEachNode(_=>v.setNodeAttribute(_,"fixed",!1)),f.current={type:"idle"}}},mousemovebody:m=>{const v=f.current;if(v.type==="downing"||v.type==="dragging"){v.type==="downing"&&(f.current={...v,type:"dragging"}),p.current++;const _=e.getGraph(),E=e.viewportToGraph(m),S={x:E.x-v.initialMousePosition.x,y:E.y-v.initialMousePosition.y};for(const b in v.initialNodesPosition){const T=v.initialNodesPosition[b];_.setNodeAttribute(b,"x",T.x+S.x),_.setNodeAttribute(b,"y",T.y+S.y)}_.emit("nodesDragged"),m.preventSigmaDefault(),m.original.preventDefault()}}})},[t,o,u,l,i,n,c,s,e,a,r]),x.useEffect(()=>{const m=()=>{f.current.type==="idle"&&(l(),u())},v=e.getContainer();return v.addEventListener("mouseleave",m),()=>{v.removeEventListener("mouseleave",m)}},[u,l,e]),null};var d9e=pn,f9e=function(t){if(!d9e(t))throw new Error("graphology-metrics/simple-size: the given graph is not a valid graphology instance.");if(!t.multi)return t.size;var n=0,r=0;function i(){n++}function a(){r++}return t.forEachNode(function(o){t.type!=="directed"&&t.forEachUndirectedNeighbor(o,i),t.type!=="undirected"&&t.forEachOutNeighbor(o,a)}),n/2+r},p9e=pn,g9e=f9e;function m9e(e,t){return 2*t/(e*(e-1))}function h9e(e,t){return t/(e*(e-1))}function _9e(e,t){var n=e*(e-1);return t/(n+n/2)}function sd(e,t,n){var r,i;if(arguments.length>3){if(r=n,i=arguments[3],typeof r!="number"||r<0)throw new Error("graphology-metrics/density: given order is not a valid number.");if(typeof i!="number"||i<0)throw new Error("graphology-metrics/density: given size is not a valid number.")}else{if(!p9e(n))throw new Error("graphology-metrics/density: given graph is not a valid graphology instance.");r=n.order,i=n.size,n.multi&&t===!1&&(i=g9e(n))}if(r<2)return 0;e===null&&(e=n.type),t===null&&(t=n.multi);var a;return e==="undirected"?a=m9e:e==="directed"?a=h9e:a=_9e,a(r,i)}sd.bind(null,null,null);sd.bind(null,"directed",!1);sd.bind(null,"undirected",!1);sd.bind(null,"mixed",!1);sd.bind(null,"directed",!0);sd.bind(null,"undirected",!0);sd.bind(null,"mixed",!0);var bM={},Kj=pn;function v9e(e,t){if(!Kj(e))throw new Error("graphology-metrics/extent: the given graph is not a valid graphology instance.");var n=[].concat(t),r,i,a,o={};for(a=0;ao[i][1]&&(o[i][1]=r)}),typeof t=="string"?o[t]:o}function E9e(e,t){if(!Kj(e))throw new Error("graphology-metrics/extent: the given graph is not a valid graphology instance.");var n=[].concat(t),r,i,a,o={};for(a=0;ao[i][1]&&(o[i][1]=r)}),typeof t=="string"?o[t]:o}bM.nodeExtent=v9e;bM.edgeExtent=E9e;var Qj=na,Xj=pn,Zj=uy,kc=so,Jj={getNodeCommunity:"community",getEdgeWeight:"weight",resolution:1};function b9e(e,t){var n=new Array(e.order),r=new Float64Array(e.order),i={},a=0,o=kc.createEdgeWeightGetter(t.getEdgeWeight).fromEntry,s=kc.createNodeValueGetter(t.getNodeCommunity).fromEntry,l=0,c={};return e.forEachNode(function(u,f){c[u]=l,n[l++]=s(u,f)}),e.forEachUndirectedEdge(function(u,f,p,m,v,_,E){var S=o(u,f,p,m,v,_,E);a+=S,i[u]=S,r[c[p]]+=S,p!==m&&(r[c[m]]+=S)}),{weights:i,communities:n,weightedDegrees:r,M:a}}function S9e(e,t){var n=new Array(e.order),r=new Float64Array(e.order),i=new Float64Array(e.order),a={},o=0,s=kc.createEdgeWeightGetter(t.getEdgeWeight).fromEntry,l=kc.createNodeValueGetter(t.getNodeCommunity).fromEntry,c=0,u={};return e.forEachNode(function(f,p){u[f]=c,n[c++]=l(f,p)}),e.forEachDirectedEdge(function(f,p,m,v,_,E,S){var b=s(f,p,m,v,_,E,S);o+=b,a[f]=b,i[u[m]]+=b,r[u[v]]+=b}),{weights:a,communities:n,weightedInDegrees:r,weightedOutDegrees:i,M:o}}function y9e(e,t){var n=t.resolution,r=b9e(e,t),i=r.communities,a=r.weightedDegrees,o=r.M,s=e.nodes(),l,c,u,f,p,m,v=0,_=o*2;for(l=0,u=e.order;l"u")throw new Error('graphology-metrics/modularity: the "'+o+'" node is not in the partition.');r[l]=0,i[l]=0}),{communities:n,totalWeights:r,internalWeights:i}}function R9e(e,t){var n={},r={},i={},a={},o=kc.createNodeValueGetter(t.getNodeCommunity).fromEntry;return e.forEachNode(function(s,l){var c=o(s,l);if(n[s]=c,typeof c>"u")throw new Error('graphology-metrics/modularity: the "'+s+'" node is not in the partition.');r[c]=0,i[c]=0,a[c]=0}),{communities:n,totalInWeights:r,totalOutWeights:i,internalWeights:a}}function N9e(e,t){var n=t.resolution,r=C9e(e,t),i=0,a=r.totalWeights,o=r.internalWeights,s=r.communities,l=kc.createEdgeWeightGetter(t.getEdgeWeight).fromEntry;e.forEachUndirectedEdge(function(p,m,v,_,E,S,b){var T=l(p,m,v,_,E,S,b);i+=T;var C=s[v],R=s[_];a[C]+=T,a[R]+=T,C===R&&(o[C]+=T*2)});var c=0,u=i*2;for(var f in o)c+=o[f]/u-Math.pow(a[f]/u,2)*n;return c}function A9e(e,t){var n=t.resolution,r=R9e(e,t),i=0,a=r.totalInWeights,o=r.totalOutWeights,s=r.internalWeights,l=r.communities,c=kc.createEdgeWeightGetter(t.getEdgeWeight).fromEntry;e.forEachDirectedEdge(function(p,m,v,_,E,S,b){var T=c(p,m,v,_,E,S,b);i+=T;var C=l[v],R=l[_];o[C]+=T,a[R]+=T,C===R&&(s[C]+=T)});var u=0;for(var f in s)u+=s[f]/i-a[f]*o[f]/Math.pow(i,2)*n;return u}function w9e(e,t,n,r){return r/(2*e)-t*n/(2*(e*e))}function O9e(e,t,n,r,i,a){return a/e-(i*t+r*n)/(e*e)}function x9e(e,t){if(!Xj(e))throw new Error("graphology-metrics/modularity: given graph is not a valid graphology instance.");if(e.size===0)throw new Error("graphology-metrics/modularity: cannot compute modularity of an empty graph.");if(e.multi)throw new Error("graphology-metrics/modularity: cannot compute modularity of a multi graph. Cast it to a simple one beforehand.");var n=Zj(e);if(n==="mixed")throw new Error("graphology-metrics/modularity: cannot compute modularity of a mixed graph.");return t=Qj(t,Jj),n==="directed"?T9e(e,t):y9e(e,t)}function eW(e,t){if(!Xj(e))throw new Error("graphology-metrics/modularity: given graph is not a valid graphology instance.");if(e.size===0)throw new Error("graphology-metrics/modularity: cannot compute modularity of an empty graph.");if(e.multi)throw new Error("graphology-metrics/modularity: cannot compute modularity of a multi graph. Cast it to a simple one beforehand.");var n=Zj(e);if(n==="mixed")throw new Error("graphology-metrics/modularity: cannot compute modularity of a mixed graph.");return t=Qj(t,Jj),n==="directed"?A9e(e,t):N9e(e,t)}var u0=eW;u0.sparse=eW;u0.dense=x9e;u0.undirectedDelta=w9e;u0.directedDelta=O9e;so.createEdgeWeightGetter;var D9e=bM,I9e=D9e.nodeExtent;const PE=.05,Ew=50,M9e=({size:e,opacity:t,color:n})=>{const r=cg(),i=x.useRef(null),a=x.useRef(void 0),o=x.useRef(e),s=x.useRef(t),l=x.useCallback(()=>{const f=e*PE+o.current*(1-PE),p=t*PE+s.current*(1-PE);return Math.abs((f-e)/e)>=.01?(o.current=f,s.current=p,!0):(o.current=e,s.current=t,!1)},[e,t]),c=x.useCallback(()=>{a.current&&(window.clearTimeout(a.current),a.current=void 0);const f=l(),p=o.current,m=s.current,v=i.current,_=v==null?void 0:v.getContext("2d");if(!_)return;const{angle:E}=r.getCamera().getState(),{x:S,y:b}=I9e(r.getGraph(),["x","y"]),T=r.graphToViewport({x:Se.mean(S),y:Se.mean(b)});let{width:C,height:R}=r.getDimensions();const O=Wb();C*=O,R*=O,T.x*=O,T.y*=O;const N=Math.sqrt(C**2+R**2)/2,L=p*r.getGraphToViewportRatio(),I=L>Ew?m:m*(L-Ew/2)/(Ew/2);if(_.clearRect(0,0,C,R),!(I<=0)){_.save(),_.translate(T.x,T.y),_.rotate(E),_.translate(-T.x,-T.y),_.translate(T.x,T.y),_.translate(L*Math.round((C/2-T.x)/L),L*Math.round((R/2-T.y)/L)),_.globalAlpha=I,_.strokeStyle=n,_.lineWidth=.5;for(let F=L/2;F<=N;F+=L)for(let ee=-1;ee<=1;ee+=2)_.beginPath(),_.moveTo(F*ee,-N),_.lineTo(F*ee,N),_.stroke(),_.beginPath(),_.moveTo(-N,F*ee),_.lineTo(N,F*ee),_.stroke();_.restore(),f&&(a.current=window.setTimeout(c,30))}},[n,r,l]),u=x.useCallback(()=>{const f=i.current;if(!f)return;const{width:p,height:m}=r.getDimensions(),v=Wb();f.style.width=p+"px",f.style.height=m+"px",f.setAttribute("width",p*v+"px"),f.setAttribute("height",m*v+"px")},[r]);return x.useEffect(()=>{if(r)return u(),c(),r.on("resize",u),r.on("afterRender",c),()=>{r.off("resize",u),r.off("afterRender",c)}},[r,u,c]),h.jsx("canvas",{ref:i,className:"position-absolute inset-0 graph-layout-grid"})},L9e=({firstCorner:e,lastCorner:t})=>{const n=Math.min(e.x,t.x),r=Math.min(e.y,t.y),i=Math.abs(e.x-t.x),a=Math.abs(e.y-t.y);return h.jsx("div",{style:{position:"absolute",inset:0},children:h.jsx("svg",{width:"100%",height:"100%",children:h.jsx("rect",{x:n,y:r,width:i,height:a,stroke:"grey",fill:"transparent",strokeWidth:2,strokeDasharray:6})})})},k9e=()=>{const e=cg(),t=$j(),[n,r]=x.useState({type:"idle"}),i=s_(),{select:a}=Xu(),{setEmphasizedNodes:o}=z7(),s=x.useCallback(()=>{e.getCamera().enable(),r({type:"idle"}),o(null)},[e,o]);return x.useEffect(()=>{const l=u=>{n.type!=="idle"&&(u.key==="Escape"&&s(),u.key==="Control"&&(r(f=>({...f,ctrlKeyDown:!0})),o(new Set(n.capturedNodes.concat(Array.from(i.items))))))},c=u=>{n.type!=="idle"&&u.key==="Control"&&(r(f=>({...f,ctrlKeyDown:!1})),o(new Set(n.capturedNodes)))};return window.document.body.addEventListener("keydown",l),window.document.body.addEventListener("keyup",c),()=>{window.document.body.removeEventListener("keydown",l),window.document.body.removeEventListener("keyup",c)}},[s,i,n,o]),x.useEffect(()=>{t({mousemovebody:l=>{if(n.type==="marquee"){const c=Se.pick(l,"x","y"),u=e.getGraph(),f=e.viewportToGraph(n.startCorner),p=e.viewportToGraph(c),m=Math.min(f.x,p.x),v=Math.min(f.y,p.y),_=Math.max(f.x,p.x),E=Math.max(f.y,p.y),S=u.filterNodes((b,{x:T,y:C})=>{const R=e.getNodeDisplayData(b).size;return!(T+R_||C+RE)});o(new Set(S.concat(n.ctrlKeyDown&&i.type==="nodes"?Array.from(i.items):[]))),r({...n,mouseCorner:c,capturedNodes:S})}},doubleClickStage:l=>{if(l.preventSigmaDefault(),n.type==="idle"){const c=Se.pick(l.event,"x","y");r({type:"marquee",startCorner:c,mouseCorner:c,ctrlKeyDown:l.event.original.ctrlKey,capturedNodes:[]}),e.getCamera().disable()}},click:()=>{n.type!=="idle"&&(a({items:new Set(n.capturedNodes),type:"nodes",replace:!n.ctrlKeyDown}),s())}})},[t,e,n,i,s,o,a]),n.type==="marquee"?h.jsx(L9e,{firstCorner:n.startCorner,lastCorner:n.mouseCorner}):null},P9e=.1,F9e=10;function U9e(e){return e<=P9e?1/0:e>=F9e?0:6/e}const B9e=({setIsReady:e})=>{const t=cg(),n=Nr(),r=lo(),{theme:i}=Hc();return x.useEffect(()=>{i_.set(t),a_({forceRefresh:!0})},[t]),x.useEffect(()=>{const a=fy(i);t.setSetting("labelColor",{color:a==="dark"?"#FFF":"#000"}),t.setSetting("edgeLabelColor",{color:a==="dark"?"#495057":"#CCC"}),t.setSetting("nodeHoverBackgoundColor",a==="dark"?"#000":"#FFF"),t.setSetting("renderEdgeLabels",r.edgesLabel.type!=="none"),t.setSetting("defaultDrawNodeLabel",iP(r,py)),t.setSetting("defaultDrawNodeHover",iP(r,Npe)),t.setSetting("defaultDrawEdgeLabel",Uie(r,VH));const o=U9e(r.nodesLabelSize.density),s=o===0?1/0:QH.labelDensity;t.setSetting("labelRenderedSizeThreshold",o),t.setSetting("labelDensity",s),e()},[r,n,e,t,i]),null};function G9e(){const[e,t]=x.useState(!1),n=document.body;return x.useEffect(()=>{const i=()=>t(a=>!a);return document.addEventListener("fullscreenchange",i),()=>document.removeEventListener("fullscreenchange",i)},[]),{toggle:x.useCallback(()=>{document.fullscreenElement!==n?n.requestFullscreen():document.exitFullscreen&&document.exitFullscreen()},[n]),isFullScreen:e}}const $9e=()=>{const{t:e}=lt(),{isFullScreen:t,toggle:n}=G9e(),r=LD(),i="btn btn-ico btn-dark btn-sm mt-1",a={duration:200,factor:1.5};return h.jsxs("div",{className:"position-absolute d-flex flex-column sigma-controls",style:{right:10,bottom:10},children:[h.jsx("button",{className:i,onClick:()=>r.getCamera().animatedZoom(a),title:e("graph.control.zoomIn").toString(),children:h.jsx(Dre,{})}),h.jsx("button",{className:i,onClick:()=>r.getCamera().animatedUnzoom(a),title:e("graph.control.zoomOut").toString(),children:h.jsx(Ire,{})}),h.jsx("button",{className:i,onClick:()=>a_({forceRefresh:!0,source:"sigma"}),title:e("graph.control.zoomReset").toString(),children:h.jsx(Rie,{})}),h.jsx("button",{className:i,onClick:()=>n(),title:t?e("graph.control.fullscreenExit").toString():e("graph.control.fullscreenEnter").toString(),children:t?h.jsx(wIe,{}):h.jsx(OIe,{})})]})},z9e=()=>h.jsx("div",{className:"position-absolute sigma-controls",style:{left:10,bottom:10,marginRight:"4em"},children:h.jsx(i9e,{minimal:!0})}),H9e=()=>{var f,p;const{backgroundColor:e,layoutGridColor:t}=lo(),n=$7(),{quality:r}=Ey(),{hoveredNode:i,hoveredEdge:a}=G7(),[o,s]=x.useState(!1),l=x.useCallback(()=>{s(!0)},[s]),c=x.useMemo(()=>EM({size:{mode:"max",value:256}}),[]),u=x.useMemo(()=>({labelFont:"Poppins, Arial, Helvetica, Geneva",edgeLabelFont:"Poppins, Arial, Helvetica, Geneva",enableEdgeEvents:!0,renderEdgeLabels:!0,zIndex:!0,itemSizesReference:"positions",zoomToSizeRatioFunction:m=>m,defaultNodeType:"image",nodeProgramClasses:{image:c,bordered:kx},allowInvalidContainer:!0}),[c]);return h.jsxs(h.Fragment,{children:[h.jsxs(M8e,{className:gt("position-absolute inset-0",!o&&"visually-hidden",(i||a)&&"cursor-pointer"),style:{backgroundColor:e},graph:n,settings:u,children:[h.jsx(u9e,{}),h.jsx(l9e,{}),h.jsx(B9e,{setIsReady:l}),h.jsxs("div",{className:"sigma-layers",children:[r.enabled&&r.showGrid&&((f=r.metric)==null?void 0:f.deltaMax)&&h.jsx(M9e,{size:r.metric.deltaMax,opacity:((p=r.metric)==null?void 0:p.cMax)||0,color:t}),h.jsx(k9e,{})]})]}),h.jsx($9e,{}),h.jsx(z9e,{})]})},V9e=()=>{const{t:e}=lt(),{quality:t}=ys.get(),{setQuality:n}=q7();return h.jsxs("div",{className:"panel-block",children:[e("layouts.quality.title"),h.jsxs("p",{className:"text-muted small d-none d-md-block",children:[e("layouts.quality.description")," ",h.jsx("a",{href:"https://jgaa.info/index.php/jgaa/article/view/paper626",children:"(Jacomy 2023)"})]}),h.jsxs("div",{className:"form-check",children:[h.jsx("input",{className:"form-check-input",id:"qualityEnabled",checked:t.enabled,type:"checkbox",onChange:r=>n({...t,enabled:r.target.checked})}),h.jsx("label",{htmlFor:"qualityEnabled",children:e("layouts.quality.enable")})]}),h.jsxs("div",{className:"form-check",children:[h.jsx("input",{className:"form-check-input",id:"qualityGrid",checked:t.showGrid,type:"checkbox",onChange:r=>n({...t,showGrid:r.target.checked})}),h.jsx("label",{htmlFor:"qualityGrid",children:e("layouts.quality.showGrid")})]})]})},q9e=({layout:e,onStart:t,onStop:n,isRunning:r})=>{var C;const{t:i}=lt(),{openModal:a}=Ji(),o=Nr(),s=$7(),{nodeFields:l,edgeFields:c}=o,[u,f]=x.useState(null),[p,m]=Pp(qp),v=x.useMemo(()=>p.layoutsParameters[e.id]||{},[e.id,p.layoutsParameters]),_=x.useMemo(()=>e.parameters.reduce((R,O)=>({...R,[O.id]:Se.isNil(O.defaultValue)?void 0:O.defaultValue}),{}),[e]);x.useEffect(()=>{m(R=>({...R,layoutsParameters:{...R.layoutsParameters,[e.id]:{..._,...R.layoutsParameters[e.id]||{}}}}))},[e,_,m]);const E=x.useCallback((R,O)=>{m(N=>({...N,layoutsParameters:{...N.layoutsParameters,[e.id]:{...N.layoutsParameters[e.id]||{},[R]:O}}}))},[e.id,m]),S=x.useCallback(R=>{m(O=>({...O,layoutsParameters:{...O.layoutsParameters,[e.id]:Se.isNil(R)?_:R}}))},[e.id,_,m]),b=x.useCallback(R=>{f(typeof R=="string"?{date:Date.now(),message:R}:null)},[]),T=x.useCallback(()=>{if(r)n();else try{t(v),e.type==="sync"&&b(i("layouts.exec.success",{layout:i(`layouts.${e.id}.title`)}))}catch(R){console.error(R)}},[r,e.id,e.type,v,t,n,b,i]);return h.jsxs("form",{className:"panel-wrapper",onSubmit:R=>{R.preventDefault(),T()},noValidate:!0,children:[h.jsxs("div",{className:"panel-block-grow",children:[h.jsx("h3",{className:"fs-5",children:i(`layouts.${e.id}.title`)}),e.description&&h.jsx("p",{className:"text-muted small",children:i(`layouts.${e.id}.description`)}),e.parameters.map(R=>{const O=v[R.id],N=`layouts-${e.id}-params-${R.id})}`;return h.jsxs("div",{className:"my-1",children:[R.type==="number"&&h.jsx(_Y,{id:N,label:i(`layouts.${e.id}.parameters.${R.id}.title`),description:R.description?i(`layouts.${e.id}.parameters.${R.id}.description`):void 0,value:O,disabled:r,onChange:L=>E(R.id,L),required:R.required||!1,min:R.min,max:R.max,step:R.step}),R.type==="boolean"&&h.jsx(vY,{id:N,label:i(`layouts.${e.id}.parameters.${R.id}.title`),description:R.description?i(`layouts.${e.id}.parameters.${R.id}.description`):void 0,value:!!O,disabled:r,onChange:L=>E(R.id,L),required:R.required||!1}),R.type==="attribute"&&h.jsx(hx,{id:N,label:i(`layouts.${e.id}.parameters.${R.id}.title`),required:R.required,description:R.description?i(`layouts.${e.id}.parameters.${R.id}.description`):void 0,placeholder:i("common.none"),value:O,disabled:r,onChange:L=>E(R.id,L),options:(R.itemType==="nodes"?l:c).filter(L=>R.restriction?!!L[R.restriction]:!0).map(L=>({value:L.id,label:L.id}))}),R.type==="script"&&h.jsx("div",{className:"position-relative",children:h.jsxs(h.Fragment,{children:[O&&h.jsxs(h.Fragment,{children:[h.jsx("div",{className:"code-thumb mt-1",style:{height:"auto",maxHeight:"auto"},children:h.jsx(pM,{className:"javascript",children:O.toString()})}),h.jsx("div",{className:"filler-fade-out position-absolute bottom-0"})]}),h.jsx("div",{className:gt(O?"bottom-0 position-absolute w-100":""),children:h.jsxs("button",{type:"button",className:"btn btn-dark mx-auto d-block m-3",onClick:()=>a({component:gM,arguments:{title:"Custom layout",withSaveAndRun:!0,functionJsDoc:R.functionJsDoc,defaultFunction:R.defaultValue,value:O,checkFunction:R.functionCheck},beforeSubmit:({run:L,script:I})=>{E(R.id,I),L&&setTimeout(T,0)}}),title:i("common.open_code_editor").toString(),children:[h.jsx(JS,{className:"me-1"}),i("common.open_code_editor")]})})]})})]},N)}),r&&h.jsx(wY,{})]}),h.jsx("hr",{className:"m-0"}),h.jsxs("div",{className:"z-over-loader panel-block d-flex flex-row gap-1 flex-wrap align-items-center justify-content-end",children:[u&&h.jsx(VI,{openOnMount:2e3,message:u.message,type:"success",iconClassName:"fs-4"},u.date),h.jsx("div",{className:"flex-grow-1"}),(C=e.buttons)==null?void 0:C.map(({id:R,description:O,getSettings:N})=>h.jsx("button",{type:"reset",className:"btn text-nowrap mt-1 btn-secondary",title:O?i(`layouts.${e.id}.buttons.${R}.description`):void 0,onClick:()=>{const L=Loe(o,s);S(N(v,L))},disabled:r,children:i(`layouts.${e.id}.buttons.${R}.title`)},R)),h.jsx("button",{type:"reset",className:"btn text-nowrap mt-1 btn-secondary",onClick:()=>S(),disabled:r,children:i("common.reset")}),h.jsxs("button",{type:"submit",className:"btn text-nowrap mt-1 btn-primary",children:[e.type==="sync"&&h.jsx(h.Fragment,{children:i("common.apply")}),e.type==="worker"&&h.jsx(h.Fragment,{children:r?h.jsxs(h.Fragment,{children:[h.jsx(yie,{className:"me-1"}),i("common.stop")]}):h.jsxs(h.Fragment,{children:[h.jsx(Sie,{className:"me-1"}),i("common.start")]})})]})]})]})},Y9e=()=>{const{t:e}=lt(),{notify:t}=hi(),{startLayout:n,stopLayout:r}=q7(),{type:i}=Ey(),a=x.useMemo(()=>F7.map(l=>({value:l.id,label:e(`layouts.${l.id}.title`),layout:l})),[e]),[o,s]=x.useState(null);return h.jsxs(h.Fragment,{children:[h.jsxs("div",{className:"panel-block",children:[h.jsxs("h2",{className:"fs-4 d-flex align-items-center gap-1",children:[h.jsx(k2,{className:"me-1"})," ",e("layouts.title"),h.jsx(mM,{children:h.jsx("p",{className:"text-muted small",children:e("layouts.description")})})]}),h.jsx("p",{className:"text-muted small d-none d-md-block",children:e("layouts.description")}),h.jsx(ro,{...Go,options:a,value:o,onChange:l=>{s(l),r()},placeholder:e("layouts.placeholder")})]}),o!=null&&o.layout?h.jsxs(h.Fragment,{children:[h.jsx("hr",{className:"m-0"}),h.jsx(q9e,{layout:o.layout,onStart:async l=>{try{await n(o.layout.id,l)}catch(c){t({type:"error",message:c.message})}},onStop:()=>{r()},isRunning:i==="running",onCancel:()=>{r(),s(null)}},o.layout.id)]}):h.jsx("div",{className:"flex-grow-1"}),h.jsx("hr",{className:"m-0"}),h.jsx(V9e,{})]})};function j9e(e,t,n,r,i){const a=vl(i,r),o=e.fn(t,a),s={},l=e.itemType==="nodes"?"nodeData":"edgeData",c=i[l],u=e.itemType==="nodes"?i.fullGraph.order:i.fullGraph.size,f=[];for(const p in o){const m=o[p],v=n[p];if(!v)throw new Error("missing_attribute_name");for(const E in m)c[E][v]=m[E];let _=e.outputs[p];_===void 0&&(_=NO(Object.values(m),u)),f.push({id:v,itemType:e.itemType,..._})}return{report:s,fieldModels:f}}var W9e=pn,K9e=uy,Q9e=na,X9e=so.createEdgeWeightGetter,Z9e={edgeDisparityAttribute:"disparity",getEdgeWeight:"weight"};function tW(e,t,n){if(!W9e(t))throw new Error("graphology-metrics/edge/disparity: the given graph is not a valid graphology instance.");if(t.multi||K9e(t)==="mixed")throw new Error("graphology-metrics/edge/disparity: not defined for multi nor mixed graphs.");n=Q9e(n,Z9e);var r=X9e(n.getEdgeWeight).fromEntry,i={};t.forEachNode(function(c){i[c]=0}),t.forEachEdge(function(c,u,f,p,m,v,_){var E=r(c,u,f,p,m,v,_);i[f]+=E,i[p]+=E});var a,o,s,l={};if(t.forEachAssymetricAdjacencyEntry(function(c,u,f,p,m,v,_){var E=r(m,v,c,u,f,p,_);a!==c&&(a=c,o=t.degree(c),s=i[c]);var S=t.degree(u),b=i[u],T=E/s,C=E/b,R=Math.pow(1-T,o-1),O=Math.pow(1-C,S-1);l[m]=Math.min(R,O)}),e){t.updateEachEdgeAttributes(function(c,u){return u[n.edgeDisparityAttribute]=l[c],u},{attributes:[n.edgeDisparityAttribute]});return}return l}var nW=tW.bind(null,!1);nW.assign=tW.bind(null,!0);var J9e=nW,eHe=pn,tz=CD.intersectionSize;function rW(e,t){if(!eHe(t))throw new Error("graphology-metrics/simmelian-strength: given graph is not a valid graphology instance.");var n={};if(t.forEachNode(function(i){n[i]=new Set(t.neighbors(i))}),!e){var r={};return t.forEachEdge(function(i,a,o,s){r[i]=tz(n[o],n[s])}),r}t.updateEachEdgeAttributes(function(i,a,o,s){return a.simmelianStrength=tz(n[o],n[s]),a},{attributes:["simmelianStrength"]})}var iW=rW.bind(null,!1);iW.assign=rW.bind(null,!0);var tHe=iW,nHe=J9e,rHe=tHe;const Hu={quantitative:{unit:null},qualitative:null},iHe={quantitative:null,qualitative:{separator:null}},aHe={id:"disparity",itemType:"edges",outputs:{disparity:Hu},parameters:[{id:"getEdgeWeight",type:"attribute",itemType:"edges",restriction:"quantitative"}],fn(e,t){return{disparity:nHe(e9(t),e)}}},oHe=new Function(`return ( function edgeMetric(id, attributes, index, graph) { // Your code goes here return Math.random(); @@ -831,4 +831,4 @@ void main() { * @param {number} index The index position of the node in the graph * @param {Graph} graph The graphology instance (documentation: https://graphology.github.io/) * @returns number|string The computed metric of the node -*/`,functionCheck:e=>{if(!e)throw new Error("Function is not defined");const t=vl(Wt.get()),n=t.nodes()[0],r=t.getNodeAttributes(n),i=e(n,r,0,t);if(!Se.isNumber(i)&&!Se.isString(i)&&!Se.isBoolean(i))throw new Error("Function must return either a number or a string")},defaultValue:A7e}],fn(e,t){const n=e.script;if(n){const r=t.copy();Object.freeze(r);const i={};return t.nodes().forEach((a,o)=>{i[a]=n(a,t.getNodeAttributes(a),o,r)}),{custom:i}}return{custom:{}}}},O7e={id:"pagerank",itemType:"nodes",outputs:{pagerank:Hu},parameters:[{id:"getEdgeWeight",type:"attribute",itemType:"edges",restriction:"quantitative"},{id:"alpha",type:"number",defaultValue:.85},{id:"maxIterations",type:"number",defaultValue:100,min:1},{id:"tolerance",type:"number",defaultValue:1e-6}],fn(e,t){return{pagerank:l7e(t,{...e,getEdgeWeight:e.getEdgeWeight||null})}}},x7e=[N7e,O7e,THe,CHe,c7e,w7e],D7e=[aHe,lHe,sHe],I7e=({metric:e})=>{const{t}=lt(),{notify:n}=hi(),{openModal:r}=Ji(),i=Qu(),a=Nr(),{nodeFields:o,edgeFields:s}=a,{setFieldModel:l}=zo(),c=Se.keyBy(e.itemType==="nodes"?o:s,"id"),[u,f]=x.useState(null),[p,m]=Pp(qp),v=p.metrics[e.id]||{parameters:{},attributeNames:{}},_=x.useMemo(()=>({parameters:e.parameters.reduce((C,R)=>({...C,[R.id]:Se.isNil(R.defaultValue)?void 0:R.defaultValue}),{}),attributeNames:Se.mapValues(e.outputs,(C,R)=>R)}),[e]);x.useEffect(()=>{m(C=>{const R=Se.cloneDeep(C);return R.metrics[e.id]?(R.metrics[e.id]={parameters:{..._.parameters,...C.metrics[e.id].parameters},attributeNames:{..._.attributeNames,...C.metrics[e.id].attributeNames}},R):(R.metrics[e.id]=_,R)})},[e,_,m]);const E=x.useCallback((C,R,O)=>{m(N=>{const L=Se.cloneDeep(N);return L.metrics[e.id][C][R]=O,L})},[e.id,m]),S=x.useCallback(()=>{m(C=>({...C,metrics:{...C.metrics,[e.id]:_}}))},[e.id,_,m]),b=x.useCallback(C=>{f(typeof C=="string"?{date:Date.now(),message:C}:null)},[]),T=x.useCallback(()=>{try{const{fieldModels:C}=j9e(e,v.parameters,v.attributeNames,i,a);C.forEach(l),b(t("statistics.success",{items:e.itemType,metrics:Object.values(v.attributeNames).join(", "),count:Object.values(v.attributeNames).length}))}catch(C){const R=C instanceof Error?C.message:t("error.unknown");n({type:"error",message:R,title:t("statistics.title")})}},[e,v.parameters,v.attributeNames,i,a,l,b,t,n]);return h.jsxs("form",{className:"panel-wrapper",onSubmit:C=>{C.preventDefault(),T()},noValidate:!0,children:[h.jsxs("div",{className:"panel-block-grow",children:[h.jsx("h3",{className:"fs-5",children:t(`statistics.${e.itemType}.${e.id}.title`)}),e.description&&h.jsx("p",{className:"text-muted small",children:t(`statistics.${e.itemType}.${e.id}.description`)}),h.jsx("div",{className:"my-3",children:Se.map(e.outputs,(C,R)=>h.jsx(x.Fragment,{children:h.jsx(PFe,{required:!0,id:`statistics-${e.itemType}-${e.id}-params-${R}`,label:t(`statistics.${e.itemType}.${e.id}.attributes.${R}`),value:v.attributeNames[R],onChange:O=>E("attributeNames",R,O),warning:c[v.attributeNames[R]]?t(`statistics.${e.itemType}_attribute_already_exists`,{field:v.attributeNames[R]}):void 0})},R))}),e.parameters.map(C=>{const R=`statistics-${e.itemType}-${e.id}-params-${C.id}`;return h.jsxs("div",{className:"my-1",children:[C.type==="number"&&h.jsx(_Y,{id:R,label:t(`statistics.${e.itemType}.${e.id}.parameters.${C.id}.title`),required:C.required,description:C.description?t(`statistics.${e.itemType}.${e.id}.parameters.${C.id}.description`):void 0,value:v.parameters[C.id],onChange:O=>E("parameters",C.id,O)}),C.type==="boolean"&&h.jsx(vY,{id:R,label:t(`statistics.${e.itemType}.${e.id}.parameters.${C.id}.title`),required:C.required,description:C.description?t(`statistics.${e.itemType}.${e.id}.parameters.${C.id}.description`):void 0,value:v.parameters[C.id],onChange:O=>E("parameters",C.id,O)}),C.type==="enum"&&h.jsx(hx,{id:R,label:t(`statistics.${e.itemType}.${e.id}.parameters.${C.id}.title`),required:C.required,description:C.description?t(`statistics.${e.itemType}.${e.id}.parameters.${C.id}.description`):void 0,value:v.parameters[C.id],onChange:O=>E("parameters",C.id,O),options:C.values.map(({id:O})=>({value:O,label:t(`statistics.${e.itemType}.${e.id}.parameters.${C.id}.values.${O}`)}))}),C.type==="attribute"&&h.jsx(hx,{id:R,label:t(`statistics.${e.itemType}.${e.id}.parameters.${C.id}.title`),required:C.required,description:C.description?t(`statistics.${e.itemType}.${e.id}.parameters.${C.id}.description`):void 0,placeholder:t("common.none"),value:v.parameters[C.id],onChange:O=>E("parameters",C.id,O),options:(C.itemType==="nodes"?o:s).filter(O=>C.restriction?!!O[C.restriction]:!0).map(O=>({value:O.id,label:O.id}))}),C.type==="script"&&h.jsx("div",{className:"position-relative",children:h.jsxs(h.Fragment,{children:[v.parameters[C.id]&&h.jsxs(h.Fragment,{children:[h.jsx("div",{className:"code-thumb mt-1",children:h.jsx(pM,{className:"javascript",children:v.parameters[C.id].toString()})}),h.jsx("div",{className:"filler-fade-out position-absolute bottom-0"})]}),h.jsx("div",{className:gt(v.parameters[C.id]?"bottom-0 position-absolute w-100":""),children:h.jsxs("button",{type:"button",className:"btn btn-dark mx-auto d-block m-3",onClick:()=>{r({component:gM,arguments:{title:"Custom metric",withSaveAndRun:!0,functionJsDoc:C.functionJsDoc,defaultFunction:C.defaultValue,value:v.parameters[C.id],checkFunction:C.functionCheck},beforeSubmit:({run:O,script:N})=>{E("parameters",C.id,N),O&&setTimeout(T,0)}})},title:t("common.open_code_editor").toString(),children:[h.jsx(JS,{className:"me-1"}),t("common.open_code_editor")]})})]})})]},R)})]}),h.jsx("hr",{className:"m-0"}),h.jsxs("div",{className:"z-over-loader panel-block d-flex flex-row align-items-center",children:[u&&h.jsx(VI,{openOnMount:2e3,message:u.message,type:"success",iconClassName:"fs-4"},u.date),h.jsx("div",{className:"flex-grow-1"}),h.jsx("button",{type:"reset",className:"btn btn-outline-secondary ms-2",onClick:()=>S(),children:t("common.reset")}),h.jsx("button",{type:"submit",className:"btn btn-primary ms-2",children:t("statistics.compute",{count:Object.keys(v.attributeNames).length})})]})]})},M7e=()=>{const{t:e}=lt(),t=x.useMemo(()=>[{label:Se.capitalize(e("graph.model.nodes")),options:x7e.map(i=>({value:i.id,itemType:"nodes",label:e(`statistics.nodes.${i.id}.title`),metric:i}))},{label:Se.capitalize(e("graph.model.edges")),options:D7e.map(i=>({value:i.id,itemType:"edges",label:e(`statistics.edges.${i.id}.title`),metric:i}))}],[e]),[n,r]=x.useState(null);return h.jsxs(h.Fragment,{children:[h.jsxs("div",{className:"panel-block",children:[h.jsxs("h2",{className:"fs-4 d-flex align-items-center gap-1",children:[h.jsx(L8,{className:"me-1"})," ",e("statistics.title")," ",h.jsx(mM,{children:h.jsx("p",{className:"text-muted small m-0",children:e("statistics.description")})})]}),h.jsx("p",{className:"text-muted small d-none d-md-block",children:e("statistics.description")}),h.jsx(ro,{...Go,options:t,value:n,onChange:r,placeholder:e("statistics.placeholder")})]}),(n==null?void 0:n.metric)&&h.jsxs(h.Fragment,{children:[h.jsx("hr",{className:"m-0"}),h.jsx(I7e,{metric:n.metric,onClose:()=>r(null)},n.metric.id)]})]})};var L7e={aa:"ET",ab:"GE",abr:"GH",ace:"ID",ach:"UG",ada:"GH",ady:"RU",ae:"IR",aeb:"TN",af:"ZA",agq:"CM",aho:"IN",ak:"GH",akk:"IQ",aln:"XK",alt:"RU",am:"ET",amo:"NG",aoz:"ID",apd:"TG",ar:"EG",arc:"IR","arc-Nbat":"JO","arc-Palm":"SY",arn:"CL",aro:"BO",arq:"DZ",ary:"MA",arz:"EG",as:"IN",asa:"TZ",ase:"US",ast:"ES",atj:"CA",av:"RU",awa:"IN",ay:"BO",az:"AZ","az-Arab":"IR",ba:"RU",bal:"PK",ban:"ID",bap:"NP",bar:"AT",bas:"CM",bax:"CM",bbc:"ID",bbj:"CM",bci:"CI",be:"BY",bej:"SD",bem:"ZM",bew:"ID",bez:"TZ",bfd:"CM",bfq:"IN",bft:"PK",bfy:"IN",bg:"BG",bgc:"IN",bgn:"PK",bgx:"TR",bhb:"IN",bhi:"IN",bhk:"PH",bho:"IN",bi:"VU",bik:"PH",bin:"NG",bjj:"IN",bjn:"ID",bjt:"SN",bkm:"CM",bku:"PH",blt:"VN",bm:"ML",bmq:"ML",bn:"BD",bo:"CN",bpy:"IN",bqi:"IR",bqv:"CI",br:"FR",bra:"IN",brh:"PK",brx:"IN",bs:"BA",bsq:"LR",bss:"CM",bto:"PH",btv:"PK",bua:"RU",buc:"YT",bug:"ID",bum:"CM",bvb:"GQ",byn:"ER",byv:"CM",bze:"ML",ca:"ES",cch:"NG",ccp:"BD",ce:"RU",ceb:"PH",cgg:"UG",ch:"GU",chk:"FM",chm:"RU",cho:"US",chp:"CA",chr:"US",cja:"KH",cjm:"VN",ckb:"IQ",co:"FR",cop:"EG",cps:"PH",cr:"CA",crh:"UA",crj:"CA",crk:"CA",crl:"CA",crm:"CA",crs:"SC",cs:"CZ",csb:"PL",csw:"CA",ctd:"MM",cu:"RU","cu-Glag":"BG",cv:"RU",cy:"GB",da:"DK",dak:"US",dar:"RU",dav:"KE",dcc:"IN",de:"DE",den:"CA",dgr:"CA",dje:"NE",dnj:"CI",doi:"IN",dsb:"DE",dtm:"ML",dtp:"MY",dty:"NP",dua:"CM",dv:"MV",dyo:"SN",dyu:"BF",dz:"BT",ebu:"KE",ee:"GH",efi:"NG",egl:"IT",egy:"EG",eky:"MM",el:"GR",en:"US","en-Shaw":"GB",es:"ES",esu:"US",et:"EE",ett:"IT",eu:"ES",ewo:"CM",ext:"ES",fa:"IR",fan:"GQ",ff:"SN","ff-Adlm":"GN",ffm:"ML",fi:"FI",fia:"SD",fil:"PH",fit:"SE",fj:"FJ",fo:"FO",fon:"BJ",fr:"FR",frc:"US",frp:"FR",frr:"DE",frs:"DE",fub:"CM",fud:"WF",fuf:"GN",fuq:"NE",fur:"IT",fuv:"NG",fvr:"SD",fy:"NL",ga:"IE",gaa:"GH",gag:"MD",gan:"CN",gay:"ID",gbm:"IN",gbz:"IR",gcr:"GF",gd:"GB",gez:"ET",ggn:"NP",gil:"KI",gjk:"PK",gju:"PK",gl:"ES",glk:"IR",gn:"PY",gom:"IN",gon:"IN",gor:"ID",gos:"NL",got:"UA",grc:"CY","grc-Linb":"GR",grt:"IN",gsw:"CH",gu:"IN",gub:"BR",guc:"CO",gur:"GH",guz:"KE",gv:"IM",gvr:"NP",gwi:"CA",ha:"NG",hak:"CN",haw:"US",haz:"AF",he:"IL",hi:"IN",hif:"FJ",hil:"PH",hlu:"TR",hmd:"CN",hnd:"PK",hne:"IN",hnj:"LA",hnn:"PH",hno:"PK",ho:"PG",hoc:"IN",hoj:"IN",hr:"HR",hsb:"DE",hsn:"CN",ht:"HT",hu:"HU",hy:"AM",hz:"NA",ia:"FR",iba:"MY",ibb:"NG",id:"ID",ife:"TG",ig:"NG",ii:"CN",ik:"US",ikt:"CA",ilo:"PH",in:"ID",inh:"RU",is:"IS",it:"IT",iu:"CA",iw:"IL",izh:"RU",ja:"JP",jam:"JM",jgo:"CM",ji:"UA",jmc:"TZ",jml:"NP",jut:"DK",jv:"ID",jw:"ID",ka:"GE",kaa:"UZ",kab:"DZ",kac:"MM",kaj:"NG",kam:"KE",kao:"ML",kbd:"RU",kby:"NE",kcg:"NG",kck:"ZW",kde:"TZ",kdh:"TG",kdt:"TH",kea:"CV",ken:"CM",kfo:"CI",kfr:"IN",kfy:"IN",kg:"CD",kge:"ID",kgp:"BR",kha:"IN",khb:"CN",khn:"IN",khq:"ML",kht:"IN",khw:"PK",ki:"KE",kiu:"TR",kj:"NA",kjg:"LA",kk:"KZ","kk-Arab":"CN",kkj:"CM",kl:"GL",kln:"KE",km:"KH",kmb:"AO",kn:"IN",knf:"SN",ko:"KR",koi:"RU",kok:"IN",kos:"FM",kpe:"LR",krc:"RU",kri:"SL",krj:"PH",krl:"RU",kru:"IN",ks:"IN",ksb:"TZ",ksf:"CM",ksh:"DE",ku:"TR","ku-Arab":"IQ",kum:"RU",kv:"RU",kvr:"ID",kvx:"PK",kw:"GB",kxm:"TH",kxp:"PK",ky:"KG","ky-Arab":"CN","ky-Latn":"TR",la:"VA",lab:"GR",lad:"IL",lag:"TZ",lah:"PK",laj:"UG",lb:"LU",lbe:"RU",lbw:"ID",lcp:"CN",lep:"IN",lez:"RU",lg:"UG",li:"NL",lif:"NP","lif-Limb":"IN",lij:"IT",lis:"CN",ljp:"ID",lki:"IR",lkt:"US",lmn:"IN",lmo:"IT",ln:"CD",lo:"LA",lol:"CD",loz:"ZM",lrc:"IR",lt:"LT",ltg:"LV",lu:"CD",lua:"CD",luo:"KE",luy:"KE",luz:"IR",lv:"LV",lwl:"TH",lzh:"CN",lzz:"TR",mad:"ID",maf:"CM",mag:"IN",mai:"IN",mak:"ID",man:"GM","man-Nkoo":"GN",mas:"KE",maz:"MX",mdf:"RU",mdh:"PH",mdr:"ID",men:"SL",mer:"KE",mfa:"TH",mfe:"MU",mg:"MG",mgh:"MZ",mgo:"CM",mgp:"NP",mgy:"TZ",mh:"MH",mi:"NZ",min:"ID",mis:"IQ",mk:"MK",ml:"IN",mls:"SD",mn:"MN","mn-Mong":"CN",mni:"IN",mnw:"MM",moe:"CA",moh:"CA",mos:"BF",mr:"IN",mrd:"NP",mrj:"RU",mro:"BD",ms:"MY",mt:"MT",mtr:"IN",mua:"CM",mus:"US",mvy:"PK",mwk:"ML",mwr:"IN",mwv:"ID",mxc:"ZW",my:"MM",myv:"RU",myx:"UG",myz:"IR",mzn:"IR",na:"NR",nan:"CN",nap:"IT",naq:"NA",nb:"NO",nch:"MX",nd:"ZW",ndc:"MZ",nds:"DE",ne:"NP",new:"NP",ng:"NA",ngl:"MZ",nhe:"MX",nhw:"MX",nij:"ID",niu:"NU",njo:"IN",nl:"NL",nmg:"CM",nn:"NO",nnh:"CM",no:"NO",nod:"TH",noe:"IN",non:"SE",nqo:"GN",nr:"ZA",nsk:"CA",nso:"ZA",nus:"SS",nv:"US",nxq:"CN",ny:"MW",nym:"TZ",nyn:"UG",nzi:"GH",oc:"FR",om:"ET",or:"IN",os:"GE",osa:"US",otk:"MN",pa:"IN","pa-Arab":"PK",pag:"PH",pal:"IR","pal-Phlp":"CN",pam:"PH",pap:"AW",pau:"PW",pcd:"FR",pcm:"NG",pdc:"US",pdt:"CA",peo:"IR",pfl:"DE",phn:"LB",pka:"IN",pko:"KE",pl:"PL",pms:"IT",pnt:"GR",pon:"FM",pra:"PK",prd:"IR",ps:"AF",pt:"BR",puu:"GA",qu:"PE",quc:"GT",qug:"EC",raj:"IN",rcf:"RE",rej:"ID",rgn:"IT",ria:"IN",rif:"MA",rjs:"NP",rkt:"BD",rm:"CH",rmf:"FI",rmo:"CH",rmt:"IR",rmu:"SE",rn:"BI",rng:"MZ",ro:"RO",rob:"ID",rof:"TZ",rtm:"FJ",ru:"RU",rue:"UA",rug:"SB",rw:"RW",rwk:"TZ",ryu:"JP",sa:"IN",saf:"GH",sah:"RU",saq:"KE",sas:"ID",sat:"IN",sav:"SN",saz:"IN",sbp:"TZ",sc:"IT",sck:"IN",scn:"IT",sco:"GB",scs:"CA",sd:"PK","sd-Deva":"IN","sd-Khoj":"IN","sd-Sind":"IN",sdc:"IT",sdh:"IR",se:"NO",sef:"CI",seh:"MZ",sei:"MX",ses:"ML",sg:"CF",sga:"IE",sgs:"LT",shi:"MA",shn:"MM",si:"LK",sid:"ET",sk:"SK",skr:"PK",sl:"SI",sli:"PL",sly:"ID",sm:"WS",sma:"SE",smj:"SE",smn:"FI",smp:"IL",sms:"FI",sn:"ZW",snk:"ML",so:"SO",sou:"TH",sq:"AL",sr:"RS",srb:"IN",srn:"SR",srr:"SN",srx:"IN",ss:"ZA",ssy:"ER",st:"ZA",stq:"DE",su:"ID",suk:"TZ",sus:"GN",sv:"SE",sw:"TZ",swb:"YT",swc:"CD",swg:"DE",swv:"IN",sxn:"ID",syl:"BD",syr:"IQ",szl:"PL",ta:"IN",taj:"NP",tbw:"PH",tcy:"IN",tdd:"CN",tdg:"NP",tdh:"NP",te:"IN",tem:"SL",teo:"UG",tet:"TL",tg:"TJ","tg-Arab":"PK",th:"TH",thl:"NP",thq:"NP",thr:"NP",ti:"ET",tig:"ER",tiv:"NG",tk:"TM",tkl:"TK",tkr:"AZ",tkt:"NP",tl:"PH",tly:"AZ",tmh:"NE",tn:"ZA",to:"TO",tog:"MW",tpi:"PG",tr:"TR",tru:"TR",trv:"TW",ts:"ZA",tsd:"GR",tsf:"NP",tsg:"PH",tsj:"BT",tt:"RU",ttj:"UG",tts:"TH",ttt:"AZ",tum:"MW",tvl:"TV",twq:"NE",txg:"CN",ty:"PF",tyv:"RU",tzm:"MA",udm:"RU",ug:"CN","ug-Cyrl":"KZ",uga:"SY",uk:"UA",uli:"FM",umb:"AO",und:"US",unr:"IN","unr-Deva":"NP",unx:"IN",ur:"PK",uz:"UZ","uz-Arab":"AF",vai:"LR",ve:"ZA",vec:"IT",vep:"RU",vi:"VN",vic:"SX",vls:"BE",vmf:"DE",vmw:"MZ",vot:"RU",vro:"EE",vun:"TZ",wa:"BE",wae:"CH",wal:"ET",war:"PH",wbp:"AU",wbq:"IN",wbr:"IN",wls:"WF",wni:"KM",wo:"SN",wtm:"IN",wuu:"CN",xav:"BR",xcr:"TR",xh:"ZA",xlc:"TR",xld:"TR",xmf:"GE",xmn:"CN",xmr:"SD",xna:"SA",xnr:"IN",xog:"UG",xpr:"IR",xsa:"YE",xsr:"NP",yao:"MZ",yap:"FM",yav:"CM",ybb:"CM",yo:"NG",yrl:"BR",yua:"MX",yue:"HK","yue-Hans":"CN",za:"CN",zag:"SD",zdj:"KM",zea:"NL",zgh:"MA",zh:"CN","zh-Bopo":"TW","zh-Hanb":"TW","zh-Hant":"TW",zlm:"TG",zmi:"MY",zu:"ZA",zza:"TR"},k7e=function(e){var t=e.toUpperCase().split(/-|_/),n=t.shift(),r=t.pop();if(/^[A-Z]{2}$/.test(r)||(r=L7e[n.toLowerCase()]),!r)return"";const i=String.fromCodePoint(r.codePointAt(0)-65+127462),a=String.fromCodePoint(r.codePointAt(1)-65+127462);return i+a};const P7e=Rn(k7e);function F7e(e){return Xe({tag:"svg",attr:{viewBox:"0 0 20 20",fill:"currentColor","aria-hidden":"true"},child:[{tag:"path",attr:{d:"M7.75 2.75a.75.75 0 0 0-1.5 0v1.258a32.987 32.987 0 0 0-3.599.278.75.75 0 1 0 .198 1.487A31.545 31.545 0 0 1 8.7 5.545 19.381 19.381 0 0 1 7 9.56a19.418 19.418 0 0 1-1.002-2.05.75.75 0 0 0-1.384.577 20.935 20.935 0 0 0 1.492 2.91 19.613 19.613 0 0 1-3.828 4.154.75.75 0 1 0 .945 1.164A21.116 21.116 0 0 0 7 12.331c.095.132.192.262.29.391a.75.75 0 0 0 1.194-.91c-.204-.266-.4-.538-.59-.815a20.888 20.888 0 0 0 2.333-5.332c.31.031.618.068.924.108a.75.75 0 0 0 .198-1.487 32.832 32.832 0 0 0-3.599-.278V2.75Z"},child:[]},{tag:"path",attr:{fillRule:"evenodd",d:"M13 8a.75.75 0 0 1 .671.415l4.25 8.5a.75.75 0 1 1-1.342.67L15.787 16h-5.573l-.793 1.585a.75.75 0 1 1-1.342-.67l4.25-8.5A.75.75 0 0 1 13 8Zm2.037 6.5L13 10.427 10.964 14.5h4.073Z",clipRule:"evenodd"},child:[]}]})(e)}const rz=h.jsx(F7e,{className:"fs-5"});function kW(e){return e==="dev"?rz:P7e(e)||rz}const U7e=Se.toPairs(FO).filter(([e])=>e!=="dev").map(([e,t])=>({value:e,label:h.jsxs(h.Fragment,{children:[kW(e)," ",t.label]})})),PW=()=>{const{locale:e}=Hc(),{changeLocale:t}=H7();return h.jsxs(ig,{closeOnClickContent:!0,attachment:"top middle",targetAttachment:"bottom middle",children:[h.jsx("button",{className:"btn p-0 fs-4",children:kW(e)}),h.jsx("div",{className:"dropdown-menu show over-modal position-relative",children:U7e.map((n,r)=>h.jsx("button",{className:"dropdown-item",onClick:()=>{t(n.value)},children:n.label},r))})]})},FW=()=>{const{theme:e}=Hc(),{changeTheme:t}=H7();return h.jsxs(ig,{closeOnClickContent:!0,attachment:"top middle",targetAttachment:"bottom middle",children:[h.jsxs("button",{className:"btn p-0 fs-4",children:[e==="auto"&&h.jsx(Xk,{}),e==="light"&&h.jsx(Qk,{}),e==="dark"&&h.jsx(Kk,{})]}),h.jsx("div",{className:"dropdown-menu show over-modal position-relative",children:["auto","light","dark"].map(n=>h.jsxs("button",{className:"dropdown-item",onClick:()=>t(n),children:[n==="auto"&&h.jsxs("span",{children:[h.jsx(Xk,{})," Auto"]}),n==="light"&&h.jsxs("span",{children:[h.jsx(Qk,{})," Light"]}),n==="dark"&&h.jsxs("span",{children:[h.jsx(Kk,{})," Dark"]})]},n))})]})},B7e=()=>{const{openModal:e}=Ji(),{notify:t}=hi(),[n,r]=Tl(),{t:i}=lt("translation");return h.jsxs(h.Fragment,{children:[h.jsx("div",{className:"panel-block",children:h.jsxs("h2",{className:"fs-4",children:[h.jsx(Kre,{className:"me-1"})," ",i("settings.title")]})}),h.jsx("hr",{className:"m-0"}),h.jsxs("div",{className:"panel-block-grow",children:[h.jsxs("div",{className:"d-flex flex-row mb-3 align-items-center",children:[h.jsx("span",{className:"flex-grow-1",children:i("github.select_ui_language")}),h.jsx(PW,{})]}),h.jsx("hr",{className:"m-0"}),h.jsxs("div",{className:"d-flex flex-row my-3 align-items-center",children:[h.jsx("span",{className:"flex-grow-1",children:i("settings.theme")}),h.jsx(FW,{})]}),h.jsx("hr",{className:"m-0"}),h.jsxs("h3",{className:"fs-5 mt-3",children:[h.jsx(P2,{})," ",i("github.title")]}),!n&&h.jsxs(h.Fragment,{children:[h.jsx("p",{className:"small",children:i("github.description")}),h.jsx("div",{className:"text-center",children:h.jsxs("button",{className:"btn btn-sm btn-outline-dark",title:i("auth.sign_in").toString(),onClick:()=>e({component:aj,arguments:{}}),children:[h.jsx(U8,{className:"me-1"}),i("auth.sign_in")]})})]}),n&&h.jsxs(h.Fragment,{children:[h.jsx("p",{className:"small m-0",children:i("github.logged_as",{username:n.name})}),h.jsx("div",{className:"text-center",children:h.jsxs("button",{className:"btn btn-sm btn-outline-dark",title:i("auth.sign_out").toString(),onClick:()=>{r(null),t({type:"success",message:i("auth.unauth_success").toString()})},children:[h.jsx(Yre,{className:"me-1"})," ",i("auth.sign_out")]})})]})]}),h.jsx("div",{className:"d-flex justify-content-center",children:h.jsxs("button",{className:"btn btn-danger m-3",onClick:()=>{e({component:og,arguments:{title:i("settings.danger-zone.reset-state.title"),message:i("settings.danger-zone.reset-state.description"),successMsg:i("settings.danger-zone.reset-state.success")},beforeSubmit:()=>{B7(!0)}})},children:[h.jsx(Qre,{})," ",i("settings.danger-zone.reset-state.title")]})})]})},G7e="0.5.0",$7e=["Les Miserables.gexf","Java.gexf","Power Grid.gexf"],UW=({cancel:e,submit:t})=>{const{t:n}=lt(),{openModal:r}=Ji(),{notify:i}=hi(),[a]=Tl(),{recentRemoteFiles:o}=Hc(),{type:s}=kD(),{importFile:l}=l_(),{resetGraph:c}=zo();return x.useEffect(()=>{s==="error"&&i({type:"error",message:n("graph.open.remote.error"),title:n("gephi-lite.title")})},[s,i,n]),h.jsxs($o,{title:h.jsxs(h.Fragment,{children:[h.jsx($8,{className:"me-1",style:{height:"1em",width:"1em"}}),n("welcome.title"),h.jsx("span",{className:"flex-grow-1"}),h.jsx("span",{className:"me-1",style:{marginTop:"-0.1em"},children:h.jsx(FW,{})}),h.jsx("span",{className:"me-1",style:{marginTop:"-0.1em"},children:h.jsx(PW,{})})]}),onClose:s==="loading"?void 0:()=>e(),className:"modal-lg",children:[h.jsxs("div",{className:"row mb-3 position-relative",children:[h.jsxs("div",{className:"col-12 col-sm-6",children:[h.jsx("h3",{className:"fs-6",children:n("welcome.open_recent")}),!!o.length&&h.jsx("ul",{className:"list-unstyled",children:o.map((u,f)=>h.jsx("li",{className:"mb-1",children:h.jsx("button",{className:"btn btn-sm btn-outline-dark",onClick:async()=>{await l(u),i({type:"success",message:n("graph.open.remote.success",{filename:u.filename}),title:n("gephi-lite.title")}),t({})},children:u.filename})},f))}),!o.length&&h.jsx("p",{className:"text-muted",children:n("welcome.no_recent")})]}),h.jsxs("div",{className:"col-12 col-sm-6",children:[h.jsx("h3",{className:"fs-6",children:n("welcome.open_graph")}),h.jsxs("ul",{className:"list-unstyled",children:[a&&a.provider&&h.jsx("li",{className:"mb-1",children:h.jsxs("button",{className:"btn btn-sm btn-outline-dark",title:n("menu.open.cloud",{provider:n(`providers.${a.provider.type}`)}).toString(),onClick:()=>{r({component:lj,arguments:{}})},children:[h.jsx(lp,{className:"me-1"}),n("menu.open.cloud",{provider:n(`providers.${a.provider.type}`)}).toString()]})}),h.jsx("li",{className:"mb-1",children:h.jsxs("button",{className:"btn btn-sm btn-outline-dark",title:n("menu.open.local").toString(),onClick:()=>{r({component:bj,arguments:{}})},children:[h.jsx(lp,{className:"me-1"}),n("menu.open.local").toString()]})}),h.jsx("li",{className:"mb-1",children:h.jsxs("button",{className:"btn btn-sm btn-outline-dark",title:n("menu.open.remote").toString(),onClick:()=>{r({component:Sj,arguments:{}})},children:[h.jsx(lp,{className:"me-1"}),n("menu.open.remote").toString()]})}),h.jsx("li",{className:"mb-1",children:h.jsxs("button",{className:"btn btn-sm btn-outline-dark",title:n("menu.open.new").toString(),onClick:()=>{r({component:og,arguments:{title:n("graph.open.new.title"),message:n("graph.open.new.message"),successMsg:n("graph.open.new.success")},beforeSubmit:()=>c()})},children:[h.jsx(M8,{className:"me-1"}),n("menu.open.new").toString()]})})]}),h.jsx("br",{}),h.jsx("h3",{className:"fs-6",children:n("welcome.samples")}),h.jsx("ul",{className:"list-unstyled",children:$7e.map(u=>h.jsx("li",{className:"mb-1",children:h.jsx("button",{className:"btn btn-sm btn-outline-dark",onClick:async()=>{await l({type:"remote",url:`/gephi-lite/samples/${u}`,filename:u}),i({type:"success",message:n("graph.open.remote.success",{filename:u}),title:n("gephi-lite.title")}),t({})},children:u})},u))})]}),s==="loading"&&h.jsx(od,{})]}),h.jsxs("div",{className:"d-flex align-items-center w-100",children:[h.jsxs("div",{className:"text-muted small flex-grow-1 flex-shrink-1",children:[h.jsxs("div",{children:[n("welcome.disclaimer-1")," ",h.jsxs("a",{href:"https://github.com/gephi/gephi-lite/blob/main/CHANGELOG.md",target:"_blank",rel:"noopener",children:["v",G7e]})]}),h.jsx("div",{children:n("welcome.disclaimer-2")})]}),h.jsx("a",{href:"https://github.com/gephi/gephi-lite",target:"_blank",rel:"noreferrer",className:"flex-shrink-0 btn btn-ico",children:h.jsx(P2,{})})]})]})},z7e=()=>h.jsx($8,{style:{height:"2em"}}),H7e=()=>{const[e,t]=x.useState(window.innerWidth>=1200),{t:n}=lt(),{openModal:r}=Ji(),i=_y(),a=s_(),o=x.useMemo(()=>[{type:"button",label:n("gephi-lite.title"),icon:z7e,onClick:()=>{r({component:UW,arguments:{}})}},{type:"space"},{type:"tool",label:n("file.title"),icon:F8,panel:T4e},{type:"tool",label:n("graph.title"),icon:L2,panel:x8e},{type:"tool",label:n("statistics.title"),icon:L8,panel:M7e},{type:"space"},{type:"tool",label:n("appearance.title"),icon:k8,panel:YFe},{type:"tool",label:n("filters.title"),icon:P8,panel:y8e,badge:{content:i.future.length+i.past.length?i.future.length+i.past.length:null,status:i.past.length===0&&i.future.length>0?"secondary":"warning"}},{type:"tool",label:n("layouts.title"),icon:k2,panel:Y9e},{type:"filler"},{type:"button",label:n("gephi-lite.info"),icon:bre,onClick:()=>{window.open(rh.website_url,"_blank","noopener")}},{type:"tool",label:n("settings.title"),icon:Oie,panel:B7e}],[r,n,i]),[s,l]=x.useState(null),c=x.useMemo(()=>{if(s===null)return null;const u=o[s];return u.type==="tool"?u:null},[o,s]);return h.jsx(G8,{children:h.jsxs("div",{id:"graph-page",children:[h.jsx("div",{className:"toolbar d-flex flex-column pt-2 pb-1",children:o.map((u,f)=>u.type==="space"?h.jsx("br",{className:"my-3"},f):u.type==="filler"?h.jsx("div",{className:"flex-grow-1"},f):h.jsxs("button",{title:u.label,type:"button",className:gt("d-flex justify-content-center fs-5 position-relative",s===f&&"active"),onClick:()=>{u.type==="tool"?l(u===c?null:f):u.type==="button"&&u.onClick()},children:[h.jsx(u.icon,{}),u.type==="tool"&&!Se.isNil(u.badge)&&!Se.isNil(u.badge.content)&&h.jsx("span",{style:{fontSize:"10px !important"},className:gt("position-absolute translate-middle badge rounded-pill",u.badge.status&&`bg-${u.badge.status}`),children:u.badge.content})]},f))}),h.jsx("div",{className:gt("left-panel-wrapper",c&&"deployed"),children:c&&h.jsxs("div",{className:"left-panel border-end",children:[h.jsx("button",{className:"btn btn-icon btn-close-panel","aria-label":"close panel",onClick:()=>l(null),children:h.jsx(xre,{})}),h.jsx(c.panel,{})]})}),h.jsx("div",{className:"filler",children:h.jsxs("div",{className:"stage",children:[h.jsx(H9e,{}),h.jsxs("button",{type:"button",className:"right-panel-btn d-flex justify-content-center align-items-center",onClick:()=>t(u=>!u),children:[e?h.jsx(eP,{}):h.jsx(hie,{}),!!a.items.size&&h.jsx("span",{className:"position-absolute translate-middle badge rounded-pill bg-warning",children:a.items.size})]})]})}),h.jsx("div",{className:gt("right-panel-wrapper",e&&"deployed"),children:e&&h.jsxs("div",{className:"right-panel border-start",children:[h.jsx(p5e,{}),h.jsx("button",{type:"button",className:"right-panel-btn justify-content-center align-items-center",onClick:()=>t(u=>!u),children:h.jsx(eP,{})})]})})]})})};var BW={exports:{}},Ip,Tw=x,GW=function(){return(GW=Object.assign||function(e){for(var t,n=1,r=arguments.length;n{const{t:e}=lt(),{notify:t}=hi(),[,n]=Tl();return x.useEffect(()=>{const r=localStorage.getItem(RO);if(!Se.isNil(r))try{const i=JSON.parse(r);n({...i,provider:SUe(i.provider)})}catch(i){console.error("Failed to load user from localstorage",i),t({type:"warning",title:`${e("gephi-lite.title")}`,message:"TODO"}),n(null)}},[n,t,e]),null};let iz=!1;const Q7e=({children:e})=>{const{t}=lt(),{notify:n}=hi(),{openModal:r}=Ji(),{importFile:i}=l_(),{resetGraph:a}=zo();W7e(()=>{n({type:"warning",title:"Warning",message:"java.lang.RuntimeException: java.lang.NullPointerException"})},{code:["ArrowUp","ArrowUp","ArrowDown","ArrowDown","ArrowLeft","ArrowRight","ArrowLeft","ArrowRight","b","a"]});const o=x.useCallback(async()=>{if(iz)return;iz=!0,qp.set(()=>{const u=sessionStorage.getItem("session");return(u?nhe(u):null)??MD()}),up.set(MH());let s=!1,l=!0;const c=new URL(window.location.href);if(c.searchParams.has("new")&&(a(),s=!0,c.searchParams.delete("new"),window.history.pushState({},"",c)),!s&&(c.searchParams.has("file")||c.searchParams.has("gexf"))){!c.searchParams.has("file")&&c.searchParams.has("gexf")&&n({type:"warning",message:t("error.deprecated.gexf_search_params")});const u=c.searchParams.get("file")||c.searchParams.get("gexf")||"";try{await i({type:"remote",filename:Ex(u),url:u}),s=!0,l=!1,c.searchParams.delete("file"),window.history.pushState({},"",c)}catch(f){console.error(f),n({type:"error",message:t("graph.open.remote.error"),title:t("gephi-lite.title")})}}if(!s){const u=sessionStorage.getItem("dataset"),f=sessionStorage.getItem("filters"),p=sessionStorage.getItem("appearance");if(u){const m=xoe(u);if(m){const v=p?Pie(p):null,_=f?Poe(f):null;Wt.set(m),Xr.set(E=>_||E),Oi.set(E=>v||E),a_({forceRefresh:!0}),m.fullGraph.order>0&&(l=!1)}}}l&&r({component:UW,arguments:{}})},[]);return x.useEffect(()=>{o()},[o]),h.jsxs(tfe,{children:[h.jsx(K7e,{}),e]})},X7e=()=>{const e=x.useMemo(()=>document.getElementById("portal-target"),[]);return h.jsx(ene,{FallbackComponent:rie,onReset:t=>{console.debug(t)},children:h.jsx(Gne,{children:h.jsx(qY.Provider,{value:{...VY,portalTarget:e},children:h.jsx(ahe,{children:h.jsx(Q7e,{children:h.jsxs(Fne,{children:[h.jsx(bO,{path:"/",element:h.jsx(H7e,{})}),h.jsx(bO,{path:"*",element:h.jsx(mie,{})})]})})})})})})},Z7e=Rw.createRoot(document.getElementById("root"));Z7e.render(h.jsx(z.StrictMode,{children:h.jsx(X7e,{})}))});export default J7e(); +*/`,functionCheck:e=>{if(!e)throw new Error("Function is not defined");const t=vl(Wt.get()),n=t.nodes()[0],r=t.getNodeAttributes(n),i=e(n,r,0,t);if(!Se.isNumber(i)&&!Se.isString(i)&&!Se.isBoolean(i))throw new Error("Function must return either a number or a string")},defaultValue:A7e}],fn(e,t){const n=e.script;if(n){const r=t.copy();Object.freeze(r);const i={};return t.nodes().forEach((a,o)=>{i[a]=n(a,t.getNodeAttributes(a),o,r)}),{custom:i}}return{custom:{}}}},O7e={id:"pagerank",itemType:"nodes",outputs:{pagerank:Hu},parameters:[{id:"getEdgeWeight",type:"attribute",itemType:"edges",restriction:"quantitative"},{id:"alpha",type:"number",defaultValue:.85},{id:"maxIterations",type:"number",defaultValue:100,min:1},{id:"tolerance",type:"number",defaultValue:1e-6}],fn(e,t){return{pagerank:l7e(t,{...e,getEdgeWeight:e.getEdgeWeight||null})}}},x7e=[N7e,O7e,THe,CHe,c7e,w7e],D7e=[aHe,lHe,sHe],I7e=({metric:e})=>{const{t}=lt(),{notify:n}=hi(),{openModal:r}=Ji(),i=Qu(),a=Nr(),{nodeFields:o,edgeFields:s}=a,{setFieldModel:l}=zo(),c=Se.keyBy(e.itemType==="nodes"?o:s,"id"),[u,f]=x.useState(null),[p,m]=Pp(qp),v=p.metrics[e.id]||{parameters:{},attributeNames:{}},_=x.useMemo(()=>({parameters:e.parameters.reduce((C,R)=>({...C,[R.id]:Se.isNil(R.defaultValue)?void 0:R.defaultValue}),{}),attributeNames:Se.mapValues(e.outputs,(C,R)=>R)}),[e]);x.useEffect(()=>{m(C=>{const R=Se.cloneDeep(C);return R.metrics[e.id]?(R.metrics[e.id]={parameters:{..._.parameters,...C.metrics[e.id].parameters},attributeNames:{..._.attributeNames,...C.metrics[e.id].attributeNames}},R):(R.metrics[e.id]=_,R)})},[e,_,m]);const E=x.useCallback((C,R,O)=>{m(N=>{const L=Se.cloneDeep(N);return L.metrics[e.id][C][R]=O,L})},[e.id,m]),S=x.useCallback(()=>{m(C=>({...C,metrics:{...C.metrics,[e.id]:_}}))},[e.id,_,m]),b=x.useCallback(C=>{f(typeof C=="string"?{date:Date.now(),message:C}:null)},[]),T=x.useCallback(()=>{try{const{fieldModels:C}=j9e(e,v.parameters,v.attributeNames,i,a);C.forEach(l),b(t("statistics.success",{items:e.itemType,metrics:Object.values(v.attributeNames).join(", "),count:Object.values(v.attributeNames).length}))}catch(C){const R=C instanceof Error?C.message:t("error.unknown");n({type:"error",message:R,title:t("statistics.title")})}},[e,v.parameters,v.attributeNames,i,a,l,b,t,n]);return h.jsxs("form",{className:"panel-wrapper",onSubmit:C=>{C.preventDefault(),T()},noValidate:!0,children:[h.jsxs("div",{className:"panel-block-grow",children:[h.jsx("h3",{className:"fs-5",children:t(`statistics.${e.itemType}.${e.id}.title`)}),e.description&&h.jsx("p",{className:"text-muted small",children:t(`statistics.${e.itemType}.${e.id}.description`)}),h.jsx("div",{className:"my-3",children:Se.map(e.outputs,(C,R)=>h.jsx(x.Fragment,{children:h.jsx(PFe,{required:!0,id:`statistics-${e.itemType}-${e.id}-params-${R}`,label:t(`statistics.${e.itemType}.${e.id}.attributes.${R}`),value:v.attributeNames[R],onChange:O=>E("attributeNames",R,O),warning:c[v.attributeNames[R]]?t(`statistics.${e.itemType}_attribute_already_exists`,{field:v.attributeNames[R]}):void 0})},R))}),e.parameters.map(C=>{const R=`statistics-${e.itemType}-${e.id}-params-${C.id}`;return h.jsxs("div",{className:"my-1",children:[C.type==="number"&&h.jsx(_Y,{id:R,label:t(`statistics.${e.itemType}.${e.id}.parameters.${C.id}.title`),required:C.required,description:C.description?t(`statistics.${e.itemType}.${e.id}.parameters.${C.id}.description`):void 0,value:v.parameters[C.id],onChange:O=>E("parameters",C.id,O)}),C.type==="boolean"&&h.jsx(vY,{id:R,label:t(`statistics.${e.itemType}.${e.id}.parameters.${C.id}.title`),required:C.required,description:C.description?t(`statistics.${e.itemType}.${e.id}.parameters.${C.id}.description`):void 0,value:v.parameters[C.id],onChange:O=>E("parameters",C.id,O)}),C.type==="enum"&&h.jsx(hx,{id:R,label:t(`statistics.${e.itemType}.${e.id}.parameters.${C.id}.title`),required:C.required,description:C.description?t(`statistics.${e.itemType}.${e.id}.parameters.${C.id}.description`):void 0,value:v.parameters[C.id],onChange:O=>E("parameters",C.id,O),options:C.values.map(({id:O})=>({value:O,label:t(`statistics.${e.itemType}.${e.id}.parameters.${C.id}.values.${O}`)}))}),C.type==="attribute"&&h.jsx(hx,{id:R,label:t(`statistics.${e.itemType}.${e.id}.parameters.${C.id}.title`),required:C.required,description:C.description?t(`statistics.${e.itemType}.${e.id}.parameters.${C.id}.description`):void 0,placeholder:t("common.none"),value:v.parameters[C.id],onChange:O=>E("parameters",C.id,O),options:(C.itemType==="nodes"?o:s).filter(O=>C.restriction?!!O[C.restriction]:!0).map(O=>({value:O.id,label:O.id}))}),C.type==="script"&&h.jsx("div",{className:"position-relative",children:h.jsxs(h.Fragment,{children:[v.parameters[C.id]&&h.jsxs(h.Fragment,{children:[h.jsx("div",{className:"code-thumb mt-1",children:h.jsx(pM,{className:"javascript",children:v.parameters[C.id].toString()})}),h.jsx("div",{className:"filler-fade-out position-absolute bottom-0"})]}),h.jsx("div",{className:gt(v.parameters[C.id]?"bottom-0 position-absolute w-100":""),children:h.jsxs("button",{type:"button",className:"btn btn-dark mx-auto d-block m-3",onClick:()=>{r({component:gM,arguments:{title:"Custom metric",withSaveAndRun:!0,functionJsDoc:C.functionJsDoc,defaultFunction:C.defaultValue,value:v.parameters[C.id],checkFunction:C.functionCheck},beforeSubmit:({run:O,script:N})=>{E("parameters",C.id,N),O&&setTimeout(T,0)}})},title:t("common.open_code_editor").toString(),children:[h.jsx(JS,{className:"me-1"}),t("common.open_code_editor")]})})]})})]},R)})]}),h.jsx("hr",{className:"m-0"}),h.jsxs("div",{className:"z-over-loader panel-block d-flex flex-row align-items-center",children:[u&&h.jsx(VI,{openOnMount:2e3,message:u.message,type:"success",iconClassName:"fs-4"},u.date),h.jsx("div",{className:"flex-grow-1"}),h.jsx("button",{type:"reset",className:"btn btn-outline-secondary ms-2",onClick:()=>S(),children:t("common.reset")}),h.jsx("button",{type:"submit",className:"btn btn-primary ms-2",children:t("statistics.compute",{count:Object.keys(v.attributeNames).length})})]})]})},M7e=()=>{const{t:e}=lt(),t=x.useMemo(()=>[{label:Se.capitalize(e("graph.model.nodes")),options:x7e.map(i=>({value:i.id,itemType:"nodes",label:e(`statistics.nodes.${i.id}.title`),metric:i}))},{label:Se.capitalize(e("graph.model.edges")),options:D7e.map(i=>({value:i.id,itemType:"edges",label:e(`statistics.edges.${i.id}.title`),metric:i}))}],[e]),[n,r]=x.useState(null);return h.jsxs(h.Fragment,{children:[h.jsxs("div",{className:"panel-block",children:[h.jsxs("h2",{className:"fs-4 d-flex align-items-center gap-1",children:[h.jsx(L8,{className:"me-1"})," ",e("statistics.title")," ",h.jsx(mM,{children:h.jsx("p",{className:"text-muted small m-0",children:e("statistics.description")})})]}),h.jsx("p",{className:"text-muted small d-none d-md-block",children:e("statistics.description")}),h.jsx(ro,{...Go,options:t,value:n,onChange:r,placeholder:e("statistics.placeholder")})]}),(n==null?void 0:n.metric)&&h.jsxs(h.Fragment,{children:[h.jsx("hr",{className:"m-0"}),h.jsx(I7e,{metric:n.metric,onClose:()=>r(null)},n.metric.id)]})]})};var L7e={aa:"ET",ab:"GE",abr:"GH",ace:"ID",ach:"UG",ada:"GH",ady:"RU",ae:"IR",aeb:"TN",af:"ZA",agq:"CM",aho:"IN",ak:"GH",akk:"IQ",aln:"XK",alt:"RU",am:"ET",amo:"NG",aoz:"ID",apd:"TG",ar:"EG",arc:"IR","arc-Nbat":"JO","arc-Palm":"SY",arn:"CL",aro:"BO",arq:"DZ",ary:"MA",arz:"EG",as:"IN",asa:"TZ",ase:"US",ast:"ES",atj:"CA",av:"RU",awa:"IN",ay:"BO",az:"AZ","az-Arab":"IR",ba:"RU",bal:"PK",ban:"ID",bap:"NP",bar:"AT",bas:"CM",bax:"CM",bbc:"ID",bbj:"CM",bci:"CI",be:"BY",bej:"SD",bem:"ZM",bew:"ID",bez:"TZ",bfd:"CM",bfq:"IN",bft:"PK",bfy:"IN",bg:"BG",bgc:"IN",bgn:"PK",bgx:"TR",bhb:"IN",bhi:"IN",bhk:"PH",bho:"IN",bi:"VU",bik:"PH",bin:"NG",bjj:"IN",bjn:"ID",bjt:"SN",bkm:"CM",bku:"PH",blt:"VN",bm:"ML",bmq:"ML",bn:"BD",bo:"CN",bpy:"IN",bqi:"IR",bqv:"CI",br:"FR",bra:"IN",brh:"PK",brx:"IN",bs:"BA",bsq:"LR",bss:"CM",bto:"PH",btv:"PK",bua:"RU",buc:"YT",bug:"ID",bum:"CM",bvb:"GQ",byn:"ER",byv:"CM",bze:"ML",ca:"ES",cch:"NG",ccp:"BD",ce:"RU",ceb:"PH",cgg:"UG",ch:"GU",chk:"FM",chm:"RU",cho:"US",chp:"CA",chr:"US",cja:"KH",cjm:"VN",ckb:"IQ",co:"FR",cop:"EG",cps:"PH",cr:"CA",crh:"UA",crj:"CA",crk:"CA",crl:"CA",crm:"CA",crs:"SC",cs:"CZ",csb:"PL",csw:"CA",ctd:"MM",cu:"RU","cu-Glag":"BG",cv:"RU",cy:"GB",da:"DK",dak:"US",dar:"RU",dav:"KE",dcc:"IN",de:"DE",den:"CA",dgr:"CA",dje:"NE",dnj:"CI",doi:"IN",dsb:"DE",dtm:"ML",dtp:"MY",dty:"NP",dua:"CM",dv:"MV",dyo:"SN",dyu:"BF",dz:"BT",ebu:"KE",ee:"GH",efi:"NG",egl:"IT",egy:"EG",eky:"MM",el:"GR",en:"US","en-Shaw":"GB",es:"ES",esu:"US",et:"EE",ett:"IT",eu:"ES",ewo:"CM",ext:"ES",fa:"IR",fan:"GQ",ff:"SN","ff-Adlm":"GN",ffm:"ML",fi:"FI",fia:"SD",fil:"PH",fit:"SE",fj:"FJ",fo:"FO",fon:"BJ",fr:"FR",frc:"US",frp:"FR",frr:"DE",frs:"DE",fub:"CM",fud:"WF",fuf:"GN",fuq:"NE",fur:"IT",fuv:"NG",fvr:"SD",fy:"NL",ga:"IE",gaa:"GH",gag:"MD",gan:"CN",gay:"ID",gbm:"IN",gbz:"IR",gcr:"GF",gd:"GB",gez:"ET",ggn:"NP",gil:"KI",gjk:"PK",gju:"PK",gl:"ES",glk:"IR",gn:"PY",gom:"IN",gon:"IN",gor:"ID",gos:"NL",got:"UA",grc:"CY","grc-Linb":"GR",grt:"IN",gsw:"CH",gu:"IN",gub:"BR",guc:"CO",gur:"GH",guz:"KE",gv:"IM",gvr:"NP",gwi:"CA",ha:"NG",hak:"CN",haw:"US",haz:"AF",he:"IL",hi:"IN",hif:"FJ",hil:"PH",hlu:"TR",hmd:"CN",hnd:"PK",hne:"IN",hnj:"LA",hnn:"PH",hno:"PK",ho:"PG",hoc:"IN",hoj:"IN",hr:"HR",hsb:"DE",hsn:"CN",ht:"HT",hu:"HU",hy:"AM",hz:"NA",ia:"FR",iba:"MY",ibb:"NG",id:"ID",ife:"TG",ig:"NG",ii:"CN",ik:"US",ikt:"CA",ilo:"PH",in:"ID",inh:"RU",is:"IS",it:"IT",iu:"CA",iw:"IL",izh:"RU",ja:"JP",jam:"JM",jgo:"CM",ji:"UA",jmc:"TZ",jml:"NP",jut:"DK",jv:"ID",jw:"ID",ka:"GE",kaa:"UZ",kab:"DZ",kac:"MM",kaj:"NG",kam:"KE",kao:"ML",kbd:"RU",kby:"NE",kcg:"NG",kck:"ZW",kde:"TZ",kdh:"TG",kdt:"TH",kea:"CV",ken:"CM",kfo:"CI",kfr:"IN",kfy:"IN",kg:"CD",kge:"ID",kgp:"BR",kha:"IN",khb:"CN",khn:"IN",khq:"ML",kht:"IN",khw:"PK",ki:"KE",kiu:"TR",kj:"NA",kjg:"LA",kk:"KZ","kk-Arab":"CN",kkj:"CM",kl:"GL",kln:"KE",km:"KH",kmb:"AO",kn:"IN",knf:"SN",ko:"KR",koi:"RU",kok:"IN",kos:"FM",kpe:"LR",krc:"RU",kri:"SL",krj:"PH",krl:"RU",kru:"IN",ks:"IN",ksb:"TZ",ksf:"CM",ksh:"DE",ku:"TR","ku-Arab":"IQ",kum:"RU",kv:"RU",kvr:"ID",kvx:"PK",kw:"GB",kxm:"TH",kxp:"PK",ky:"KG","ky-Arab":"CN","ky-Latn":"TR",la:"VA",lab:"GR",lad:"IL",lag:"TZ",lah:"PK",laj:"UG",lb:"LU",lbe:"RU",lbw:"ID",lcp:"CN",lep:"IN",lez:"RU",lg:"UG",li:"NL",lif:"NP","lif-Limb":"IN",lij:"IT",lis:"CN",ljp:"ID",lki:"IR",lkt:"US",lmn:"IN",lmo:"IT",ln:"CD",lo:"LA",lol:"CD",loz:"ZM",lrc:"IR",lt:"LT",ltg:"LV",lu:"CD",lua:"CD",luo:"KE",luy:"KE",luz:"IR",lv:"LV",lwl:"TH",lzh:"CN",lzz:"TR",mad:"ID",maf:"CM",mag:"IN",mai:"IN",mak:"ID",man:"GM","man-Nkoo":"GN",mas:"KE",maz:"MX",mdf:"RU",mdh:"PH",mdr:"ID",men:"SL",mer:"KE",mfa:"TH",mfe:"MU",mg:"MG",mgh:"MZ",mgo:"CM",mgp:"NP",mgy:"TZ",mh:"MH",mi:"NZ",min:"ID",mis:"IQ",mk:"MK",ml:"IN",mls:"SD",mn:"MN","mn-Mong":"CN",mni:"IN",mnw:"MM",moe:"CA",moh:"CA",mos:"BF",mr:"IN",mrd:"NP",mrj:"RU",mro:"BD",ms:"MY",mt:"MT",mtr:"IN",mua:"CM",mus:"US",mvy:"PK",mwk:"ML",mwr:"IN",mwv:"ID",mxc:"ZW",my:"MM",myv:"RU",myx:"UG",myz:"IR",mzn:"IR",na:"NR",nan:"CN",nap:"IT",naq:"NA",nb:"NO",nch:"MX",nd:"ZW",ndc:"MZ",nds:"DE",ne:"NP",new:"NP",ng:"NA",ngl:"MZ",nhe:"MX",nhw:"MX",nij:"ID",niu:"NU",njo:"IN",nl:"NL",nmg:"CM",nn:"NO",nnh:"CM",no:"NO",nod:"TH",noe:"IN",non:"SE",nqo:"GN",nr:"ZA",nsk:"CA",nso:"ZA",nus:"SS",nv:"US",nxq:"CN",ny:"MW",nym:"TZ",nyn:"UG",nzi:"GH",oc:"FR",om:"ET",or:"IN",os:"GE",osa:"US",otk:"MN",pa:"IN","pa-Arab":"PK",pag:"PH",pal:"IR","pal-Phlp":"CN",pam:"PH",pap:"AW",pau:"PW",pcd:"FR",pcm:"NG",pdc:"US",pdt:"CA",peo:"IR",pfl:"DE",phn:"LB",pka:"IN",pko:"KE",pl:"PL",pms:"IT",pnt:"GR",pon:"FM",pra:"PK",prd:"IR",ps:"AF",pt:"BR",puu:"GA",qu:"PE",quc:"GT",qug:"EC",raj:"IN",rcf:"RE",rej:"ID",rgn:"IT",ria:"IN",rif:"MA",rjs:"NP",rkt:"BD",rm:"CH",rmf:"FI",rmo:"CH",rmt:"IR",rmu:"SE",rn:"BI",rng:"MZ",ro:"RO",rob:"ID",rof:"TZ",rtm:"FJ",ru:"RU",rue:"UA",rug:"SB",rw:"RW",rwk:"TZ",ryu:"JP",sa:"IN",saf:"GH",sah:"RU",saq:"KE",sas:"ID",sat:"IN",sav:"SN",saz:"IN",sbp:"TZ",sc:"IT",sck:"IN",scn:"IT",sco:"GB",scs:"CA",sd:"PK","sd-Deva":"IN","sd-Khoj":"IN","sd-Sind":"IN",sdc:"IT",sdh:"IR",se:"NO",sef:"CI",seh:"MZ",sei:"MX",ses:"ML",sg:"CF",sga:"IE",sgs:"LT",shi:"MA",shn:"MM",si:"LK",sid:"ET",sk:"SK",skr:"PK",sl:"SI",sli:"PL",sly:"ID",sm:"WS",sma:"SE",smj:"SE",smn:"FI",smp:"IL",sms:"FI",sn:"ZW",snk:"ML",so:"SO",sou:"TH",sq:"AL",sr:"RS",srb:"IN",srn:"SR",srr:"SN",srx:"IN",ss:"ZA",ssy:"ER",st:"ZA",stq:"DE",su:"ID",suk:"TZ",sus:"GN",sv:"SE",sw:"TZ",swb:"YT",swc:"CD",swg:"DE",swv:"IN",sxn:"ID",syl:"BD",syr:"IQ",szl:"PL",ta:"IN",taj:"NP",tbw:"PH",tcy:"IN",tdd:"CN",tdg:"NP",tdh:"NP",te:"IN",tem:"SL",teo:"UG",tet:"TL",tg:"TJ","tg-Arab":"PK",th:"TH",thl:"NP",thq:"NP",thr:"NP",ti:"ET",tig:"ER",tiv:"NG",tk:"TM",tkl:"TK",tkr:"AZ",tkt:"NP",tl:"PH",tly:"AZ",tmh:"NE",tn:"ZA",to:"TO",tog:"MW",tpi:"PG",tr:"TR",tru:"TR",trv:"TW",ts:"ZA",tsd:"GR",tsf:"NP",tsg:"PH",tsj:"BT",tt:"RU",ttj:"UG",tts:"TH",ttt:"AZ",tum:"MW",tvl:"TV",twq:"NE",txg:"CN",ty:"PF",tyv:"RU",tzm:"MA",udm:"RU",ug:"CN","ug-Cyrl":"KZ",uga:"SY",uk:"UA",uli:"FM",umb:"AO",und:"US",unr:"IN","unr-Deva":"NP",unx:"IN",ur:"PK",uz:"UZ","uz-Arab":"AF",vai:"LR",ve:"ZA",vec:"IT",vep:"RU",vi:"VN",vic:"SX",vls:"BE",vmf:"DE",vmw:"MZ",vot:"RU",vro:"EE",vun:"TZ",wa:"BE",wae:"CH",wal:"ET",war:"PH",wbp:"AU",wbq:"IN",wbr:"IN",wls:"WF",wni:"KM",wo:"SN",wtm:"IN",wuu:"CN",xav:"BR",xcr:"TR",xh:"ZA",xlc:"TR",xld:"TR",xmf:"GE",xmn:"CN",xmr:"SD",xna:"SA",xnr:"IN",xog:"UG",xpr:"IR",xsa:"YE",xsr:"NP",yao:"MZ",yap:"FM",yav:"CM",ybb:"CM",yo:"NG",yrl:"BR",yua:"MX",yue:"HK","yue-Hans":"CN",za:"CN",zag:"SD",zdj:"KM",zea:"NL",zgh:"MA",zh:"CN","zh-Bopo":"TW","zh-Hanb":"TW","zh-Hant":"TW",zlm:"TG",zmi:"MY",zu:"ZA",zza:"TR"},k7e=function(e){var t=e.toUpperCase().split(/-|_/),n=t.shift(),r=t.pop();if(/^[A-Z]{2}$/.test(r)||(r=L7e[n.toLowerCase()]),!r)return"";const i=String.fromCodePoint(r.codePointAt(0)-65+127462),a=String.fromCodePoint(r.codePointAt(1)-65+127462);return i+a};const P7e=Rn(k7e);function F7e(e){return Xe({tag:"svg",attr:{viewBox:"0 0 20 20",fill:"currentColor","aria-hidden":"true"},child:[{tag:"path",attr:{d:"M7.75 2.75a.75.75 0 0 0-1.5 0v1.258a32.987 32.987 0 0 0-3.599.278.75.75 0 1 0 .198 1.487A31.545 31.545 0 0 1 8.7 5.545 19.381 19.381 0 0 1 7 9.56a19.418 19.418 0 0 1-1.002-2.05.75.75 0 0 0-1.384.577 20.935 20.935 0 0 0 1.492 2.91 19.613 19.613 0 0 1-3.828 4.154.75.75 0 1 0 .945 1.164A21.116 21.116 0 0 0 7 12.331c.095.132.192.262.29.391a.75.75 0 0 0 1.194-.91c-.204-.266-.4-.538-.59-.815a20.888 20.888 0 0 0 2.333-5.332c.31.031.618.068.924.108a.75.75 0 0 0 .198-1.487 32.832 32.832 0 0 0-3.599-.278V2.75Z"},child:[]},{tag:"path",attr:{fillRule:"evenodd",d:"M13 8a.75.75 0 0 1 .671.415l4.25 8.5a.75.75 0 1 1-1.342.67L15.787 16h-5.573l-.793 1.585a.75.75 0 1 1-1.342-.67l4.25-8.5A.75.75 0 0 1 13 8Zm2.037 6.5L13 10.427 10.964 14.5h4.073Z",clipRule:"evenodd"},child:[]}]})(e)}const rz=h.jsx(F7e,{className:"fs-5"});function kW(e){return e==="dev"?rz:P7e(e)||rz}const U7e=Se.toPairs(FO).filter(([e])=>e!=="dev").map(([e,t])=>({value:e,label:h.jsxs(h.Fragment,{children:[kW(e)," ",t.label]})})),PW=()=>{const{locale:e}=Hc(),{changeLocale:t}=H7();return h.jsxs(ig,{closeOnClickContent:!0,attachment:"top middle",targetAttachment:"bottom middle",children:[h.jsx("button",{className:"btn p-0 fs-4",children:kW(e)}),h.jsx("div",{className:"dropdown-menu show over-modal position-relative",children:U7e.map((n,r)=>h.jsx("button",{className:"dropdown-item",onClick:()=>{t(n.value)},children:n.label},r))})]})},FW=()=>{const{theme:e}=Hc(),{changeTheme:t}=H7();return h.jsxs(ig,{closeOnClickContent:!0,attachment:"top middle",targetAttachment:"bottom middle",children:[h.jsxs("button",{className:"btn p-0 fs-4",children:[e==="auto"&&h.jsx(Xk,{}),e==="light"&&h.jsx(Qk,{}),e==="dark"&&h.jsx(Kk,{})]}),h.jsx("div",{className:"dropdown-menu show over-modal position-relative",children:["auto","light","dark"].map(n=>h.jsxs("button",{className:"dropdown-item",onClick:()=>t(n),children:[n==="auto"&&h.jsxs("span",{children:[h.jsx(Xk,{})," Auto"]}),n==="light"&&h.jsxs("span",{children:[h.jsx(Qk,{})," Light"]}),n==="dark"&&h.jsxs("span",{children:[h.jsx(Kk,{})," Dark"]})]},n))})]})},B7e=()=>{const{openModal:e}=Ji(),{notify:t}=hi(),[n,r]=Tl(),{t:i}=lt("translation");return h.jsxs(h.Fragment,{children:[h.jsx("div",{className:"panel-block",children:h.jsxs("h2",{className:"fs-4",children:[h.jsx(Kre,{className:"me-1"})," ",i("settings.title")]})}),h.jsx("hr",{className:"m-0"}),h.jsxs("div",{className:"panel-block-grow",children:[h.jsxs("div",{className:"d-flex flex-row mb-3 align-items-center",children:[h.jsx("span",{className:"flex-grow-1",children:i("github.select_ui_language")}),h.jsx(PW,{})]}),h.jsx("hr",{className:"m-0"}),h.jsxs("div",{className:"d-flex flex-row my-3 align-items-center",children:[h.jsx("span",{className:"flex-grow-1",children:i("settings.theme")}),h.jsx(FW,{})]}),h.jsx("hr",{className:"m-0"}),h.jsxs("h3",{className:"fs-5 mt-3",children:[h.jsx(P2,{})," ",i("github.title")]}),!n&&h.jsxs(h.Fragment,{children:[h.jsx("p",{className:"small",children:i("github.description")}),h.jsx("div",{className:"text-center",children:h.jsxs("button",{className:"btn btn-sm btn-outline-dark",title:i("auth.sign_in").toString(),onClick:()=>e({component:aj,arguments:{}}),children:[h.jsx(U8,{className:"me-1"}),i("auth.sign_in")]})})]}),n&&h.jsxs(h.Fragment,{children:[h.jsx("p",{className:"small m-0",children:i("github.logged_as",{username:n.name})}),h.jsx("div",{className:"text-center",children:h.jsxs("button",{className:"btn btn-sm btn-outline-dark",title:i("auth.sign_out").toString(),onClick:()=>{r(null),t({type:"success",message:i("auth.unauth_success").toString()})},children:[h.jsx(Yre,{className:"me-1"})," ",i("auth.sign_out")]})})]})]}),h.jsx("div",{className:"d-flex justify-content-center",children:h.jsxs("button",{className:"btn btn-danger m-3",onClick:()=>{e({component:og,arguments:{title:i("settings.danger-zone.reset-state.title"),message:i("settings.danger-zone.reset-state.description"),successMsg:i("settings.danger-zone.reset-state.success")},beforeSubmit:()=>{B7(!0)}})},children:[h.jsx(Qre,{})," ",i("settings.danger-zone.reset-state.title")]})})]})},G7e="0.5.1",$7e=["Les Miserables.gexf","Java.gexf","Power Grid.gexf"],UW=({cancel:e,submit:t})=>{const{t:n}=lt(),{openModal:r}=Ji(),{notify:i}=hi(),[a]=Tl(),{recentRemoteFiles:o}=Hc(),{type:s}=kD(),{importFile:l}=l_(),{resetGraph:c}=zo();return x.useEffect(()=>{s==="error"&&i({type:"error",message:n("graph.open.remote.error"),title:n("gephi-lite.title")})},[s,i,n]),h.jsxs($o,{title:h.jsxs(h.Fragment,{children:[h.jsx($8,{className:"me-1",style:{height:"1em",width:"1em"}}),n("welcome.title"),h.jsx("span",{className:"flex-grow-1"}),h.jsx("span",{className:"me-1",style:{marginTop:"-0.1em"},children:h.jsx(FW,{})}),h.jsx("span",{className:"me-1",style:{marginTop:"-0.1em"},children:h.jsx(PW,{})})]}),onClose:s==="loading"?void 0:()=>e(),className:"modal-lg",children:[h.jsxs("div",{className:"row mb-3 position-relative",children:[h.jsxs("div",{className:"col-12 col-sm-6",children:[h.jsx("h3",{className:"fs-6",children:n("welcome.open_recent")}),!!o.length&&h.jsx("ul",{className:"list-unstyled",children:o.map((u,f)=>h.jsx("li",{className:"mb-1",children:h.jsx("button",{className:"btn btn-sm btn-outline-dark",onClick:async()=>{await l(u),i({type:"success",message:n("graph.open.remote.success",{filename:u.filename}),title:n("gephi-lite.title")}),t({})},children:u.filename})},f))}),!o.length&&h.jsx("p",{className:"text-muted",children:n("welcome.no_recent")})]}),h.jsxs("div",{className:"col-12 col-sm-6",children:[h.jsx("h3",{className:"fs-6",children:n("welcome.open_graph")}),h.jsxs("ul",{className:"list-unstyled",children:[a&&a.provider&&h.jsx("li",{className:"mb-1",children:h.jsxs("button",{className:"btn btn-sm btn-outline-dark",title:n("menu.open.cloud",{provider:n(`providers.${a.provider.type}`)}).toString(),onClick:()=>{r({component:lj,arguments:{}})},children:[h.jsx(lp,{className:"me-1"}),n("menu.open.cloud",{provider:n(`providers.${a.provider.type}`)}).toString()]})}),h.jsx("li",{className:"mb-1",children:h.jsxs("button",{className:"btn btn-sm btn-outline-dark",title:n("menu.open.local").toString(),onClick:()=>{r({component:bj,arguments:{}})},children:[h.jsx(lp,{className:"me-1"}),n("menu.open.local").toString()]})}),h.jsx("li",{className:"mb-1",children:h.jsxs("button",{className:"btn btn-sm btn-outline-dark",title:n("menu.open.remote").toString(),onClick:()=>{r({component:Sj,arguments:{}})},children:[h.jsx(lp,{className:"me-1"}),n("menu.open.remote").toString()]})}),h.jsx("li",{className:"mb-1",children:h.jsxs("button",{className:"btn btn-sm btn-outline-dark",title:n("menu.open.new").toString(),onClick:()=>{r({component:og,arguments:{title:n("graph.open.new.title"),message:n("graph.open.new.message"),successMsg:n("graph.open.new.success")},beforeSubmit:()=>c()})},children:[h.jsx(M8,{className:"me-1"}),n("menu.open.new").toString()]})})]}),h.jsx("br",{}),h.jsx("h3",{className:"fs-6",children:n("welcome.samples")}),h.jsx("ul",{className:"list-unstyled",children:$7e.map(u=>h.jsx("li",{className:"mb-1",children:h.jsx("button",{className:"btn btn-sm btn-outline-dark",onClick:async()=>{await l({type:"remote",url:`/gephi-lite/samples/${u}`,filename:u}),i({type:"success",message:n("graph.open.remote.success",{filename:u}),title:n("gephi-lite.title")}),t({})},children:u})},u))})]}),s==="loading"&&h.jsx(od,{})]}),h.jsxs("div",{className:"d-flex align-items-center w-100",children:[h.jsxs("div",{className:"text-muted small flex-grow-1 flex-shrink-1",children:[h.jsxs("div",{children:[n("welcome.disclaimer-1")," ",h.jsxs("a",{href:"https://github.com/gephi/gephi-lite/blob/main/CHANGELOG.md",target:"_blank",rel:"noopener",children:["v",G7e]})]}),h.jsx("div",{children:n("welcome.disclaimer-2")})]}),h.jsx("a",{href:"https://github.com/gephi/gephi-lite",target:"_blank",rel:"noreferrer",className:"flex-shrink-0 btn btn-ico",children:h.jsx(P2,{})})]})]})},z7e=()=>h.jsx($8,{style:{height:"2em"}}),H7e=()=>{const[e,t]=x.useState(window.innerWidth>=1200),{t:n}=lt(),{openModal:r}=Ji(),i=_y(),a=s_(),o=x.useMemo(()=>[{type:"button",label:n("gephi-lite.title"),icon:z7e,onClick:()=>{r({component:UW,arguments:{}})}},{type:"space"},{type:"tool",label:n("file.title"),icon:F8,panel:T4e},{type:"tool",label:n("graph.title"),icon:L2,panel:x8e},{type:"tool",label:n("statistics.title"),icon:L8,panel:M7e},{type:"space"},{type:"tool",label:n("appearance.title"),icon:k8,panel:YFe},{type:"tool",label:n("filters.title"),icon:P8,panel:y8e,badge:{content:i.future.length+i.past.length?i.future.length+i.past.length:null,status:i.past.length===0&&i.future.length>0?"secondary":"warning"}},{type:"tool",label:n("layouts.title"),icon:k2,panel:Y9e},{type:"filler"},{type:"button",label:n("gephi-lite.info"),icon:bre,onClick:()=>{window.open(rh.website_url,"_blank","noopener")}},{type:"tool",label:n("settings.title"),icon:Oie,panel:B7e}],[r,n,i]),[s,l]=x.useState(null),c=x.useMemo(()=>{if(s===null)return null;const u=o[s];return u.type==="tool"?u:null},[o,s]);return h.jsx(G8,{children:h.jsxs("div",{id:"graph-page",children:[h.jsx("div",{className:"toolbar d-flex flex-column pt-2 pb-1",children:o.map((u,f)=>u.type==="space"?h.jsx("br",{className:"my-3"},f):u.type==="filler"?h.jsx("div",{className:"flex-grow-1"},f):h.jsxs("button",{title:u.label,type:"button",className:gt("d-flex justify-content-center fs-5 position-relative",s===f&&"active"),onClick:()=>{u.type==="tool"?l(u===c?null:f):u.type==="button"&&u.onClick()},children:[h.jsx(u.icon,{}),u.type==="tool"&&!Se.isNil(u.badge)&&!Se.isNil(u.badge.content)&&h.jsx("span",{style:{fontSize:"10px !important"},className:gt("position-absolute translate-middle badge rounded-pill",u.badge.status&&`bg-${u.badge.status}`),children:u.badge.content})]},f))}),h.jsx("div",{className:gt("left-panel-wrapper",c&&"deployed"),children:c&&h.jsxs("div",{className:"left-panel border-end",children:[h.jsx("button",{className:"btn btn-icon btn-close-panel","aria-label":"close panel",onClick:()=>l(null),children:h.jsx(xre,{})}),h.jsx(c.panel,{})]})}),h.jsx("div",{className:"filler",children:h.jsxs("div",{className:"stage",children:[h.jsx(H9e,{}),h.jsxs("button",{type:"button",className:"right-panel-btn d-flex justify-content-center align-items-center",onClick:()=>t(u=>!u),children:[e?h.jsx(eP,{}):h.jsx(hie,{}),!!a.items.size&&h.jsx("span",{className:"position-absolute translate-middle badge rounded-pill bg-warning",children:a.items.size})]})]})}),h.jsx("div",{className:gt("right-panel-wrapper",e&&"deployed"),children:e&&h.jsxs("div",{className:"right-panel border-start",children:[h.jsx(p5e,{}),h.jsx("button",{type:"button",className:"right-panel-btn justify-content-center align-items-center",onClick:()=>t(u=>!u),children:h.jsx(eP,{})})]})})]})})};var BW={exports:{}},Ip,Tw=x,GW=function(){return(GW=Object.assign||function(e){for(var t,n=1,r=arguments.length;n{const{t:e}=lt(),{notify:t}=hi(),[,n]=Tl();return x.useEffect(()=>{const r=localStorage.getItem(RO);if(!Se.isNil(r))try{const i=JSON.parse(r);n({...i,provider:SUe(i.provider)})}catch(i){console.error("Failed to load user from localstorage",i),t({type:"warning",title:`${e("gephi-lite.title")}`,message:"TODO"}),n(null)}},[n,t,e]),null};let iz=!1;const Q7e=({children:e})=>{const{t}=lt(),{notify:n}=hi(),{openModal:r}=Ji(),{importFile:i}=l_(),{resetGraph:a}=zo();W7e(()=>{n({type:"warning",title:"Warning",message:"java.lang.RuntimeException: java.lang.NullPointerException"})},{code:["ArrowUp","ArrowUp","ArrowDown","ArrowDown","ArrowLeft","ArrowRight","ArrowLeft","ArrowRight","b","a"]});const o=x.useCallback(async()=>{if(iz)return;iz=!0,qp.set(()=>{const u=sessionStorage.getItem("session");return(u?nhe(u):null)??MD()}),up.set(MH());let s=!1,l=!0;const c=new URL(window.location.href);if(c.searchParams.has("new")&&(a(),s=!0,c.searchParams.delete("new"),window.history.pushState({},"",c)),!s&&(c.searchParams.has("file")||c.searchParams.has("gexf"))){!c.searchParams.has("file")&&c.searchParams.has("gexf")&&n({type:"warning",message:t("error.deprecated.gexf_search_params")});const u=c.searchParams.get("file")||c.searchParams.get("gexf")||"";try{await i({type:"remote",filename:Ex(u),url:u}),s=!0,l=!1,c.searchParams.delete("file"),window.history.pushState({},"",c)}catch(f){console.error(f),n({type:"error",message:t("graph.open.remote.error"),title:t("gephi-lite.title")})}}if(!s){const u=sessionStorage.getItem("dataset"),f=sessionStorage.getItem("filters"),p=sessionStorage.getItem("appearance");if(u){const m=xoe(u);if(m){const v=p?Pie(p):null,_=f?Poe(f):null;Wt.set(m),Xr.set(E=>_||E),Oi.set(E=>v||E),a_({forceRefresh:!0}),m.fullGraph.order>0&&(l=!1)}}}l&&r({component:UW,arguments:{}})},[]);return x.useEffect(()=>{o()},[o]),h.jsxs(tfe,{children:[h.jsx(K7e,{}),e]})},X7e=()=>{const e=x.useMemo(()=>document.getElementById("portal-target"),[]);return h.jsx(ene,{FallbackComponent:rie,onReset:t=>{console.debug(t)},children:h.jsx(Gne,{children:h.jsx(qY.Provider,{value:{...VY,portalTarget:e},children:h.jsx(ahe,{children:h.jsx(Q7e,{children:h.jsxs(Fne,{children:[h.jsx(bO,{path:"/",element:h.jsx(H7e,{})}),h.jsx(bO,{path:"*",element:h.jsx(mie,{})})]})})})})})})},Z7e=Rw.createRoot(document.getElementById("root"));Z7e.render(h.jsx(z.StrictMode,{children:h.jsx(X7e,{})}))});export default J7e(); diff --git a/index.html b/index.html index 5ae831e..f87505e 100644 --- a/index.html +++ b/index.html @@ -13,7 +13,7 @@ --> Gephi Lite - +