diff --git a/build/asset-manifest.json b/build/asset-manifest.json index 52236f4..7bb39e7 100644 --- a/build/asset-manifest.json +++ b/build/asset-manifest.json @@ -1,7 +1,7 @@ { "files": { "main.css": "/static/css/main.7f6950a9.css", - "main.js": "/static/js/main.6411a128.js", + "main.js": "/static/js/main.69701cbf.js", "static/media/overview.svg": "/static/media/overview.2e91b190e821b00544b6.svg", "static/media/question.svg": "/static/media/question.f49af21b0654459dca13.svg", "static/media/search.svg": "/static/media/search.679b98f82ae5196a396b.svg", @@ -17,6 +17,6 @@ }, "entrypoints": [ "static/css/main.7f6950a9.css", - "static/js/main.6411a128.js" + "static/js/main.69701cbf.js" ] } \ No newline at end of file diff --git a/build/index.html b/build/index.html index 5833e86..f51b20c 100644 --- a/build/index.html +++ b/build/index.html @@ -1 +1 @@ -
framework d'appels réseaux
\nLien vers git
\nPeut toujours être utilisé dans les projets repris en tma ou d'ancien projet.
\nIl serait mieux cependant d'utiliser le language natif pour faire des appels réseaux : doc Apple
framework d'appels réseaux
\nLien vers git
\nPeut toujours être utilisé dans les projets repris en tma ou d'ancien projet.
\nIl serait mieux cependant d'utiliser le language natif pour faire des appels réseaux : doc Apple
framework de récupération d'image en ligne
\nLien vers git
\nPeut toujours être utilisé dans les projets repris en tma ou d'ancien projet.
\nIl serait mieux cependant d'utiliser le language natif pour faire des appels réseaux : doc Apple
framework de récupération d'image en ligne
\nLien vers git
\nPeut toujours être utilisé dans les projets repris en tma ou d'ancien projet.
\nIl serait mieux cependant d'utiliser le language natif pour faire des appels réseaux : doc Apple
framework d'animation
\nLien vers git
\nPermet de jouer des animations JSON\nexemple d'animation ici\navec un compte cela permet également de tester les animations fournit par les designers pour verifier le rendu\n
framework d'animation
\nLien vers git
\nPermet de jouer des animations JSON\nexemple d'animation ici\navec un compte cela permet également de tester les animations fournit par les designers pour verifier le rendu\n
framework d'appels réseaux
\nLien vers git
\nPeut toujours être utilisé dans les projets repris en tma ou d'ancien projet.
\nIl serait mieux cependant d'utiliser le language natif pour faire des appels réseaux : doc Apple
framework d'appels réseaux
\nLien vers git
\nPeut toujours être utilisé dans les projets repris en tma ou d'ancien projet.
\nIl serait mieux cependant d'utiliser le language natif pour faire des appels réseaux : doc Apple
framework de récupération d'image en ligne
\nLien vers git
\nPeut toujours être utilisé dans les projets repris en tma ou d'ancien projet.
\nIl serait mieux cependant d'utiliser le language natif pour faire des appels réseaux : doc Apple
framework de récupération d'image en ligne
\nLien vers git
\nPeut toujours être utilisé dans les projets repris en tma ou d'ancien projet.
\nIl serait mieux cependant d'utiliser le language natif pour faire des appels réseaux : doc Apple
Apple Map
\nDocumentation MapKit"}],"name":"AppleMap","title":"Apple Map","ring":"adopt","quadrant":"tools","body":"Apple Map
\nDocumentation MapKit","info":"","angleFraction":0.5457303534330578,"radiusFraction":0.33607738860918834,"release":"radar","tags":["cartograpy","iOS","hybrid"],"fileName":"/home/runner/work/tech-radar/tech-radar/radar/AppleMap.md"},{"flag":"new","featured":true,"revisions":[{"name":"Charles","release":"radar","title":"Charles","ring":"adopt","quadrant":"tools","tags":["network","proxy","Android","iOS","hybrid"],"fileName":"/home/runner/work/tech-radar/tech-radar/radar/Charles.md","body":"outil d' analyse des trames réseaux\nlien de l'outil\n
Permet via proxy de voir et analyser les trames réseaux d'un appareil.
\nDocumentation neopixl
\nPossibilité de l'utiliser via un vpn sur le mobile grâce à un outil comme openVPN.
\nDocumentation neopixl
\n
outil d' analyse des trames réseaux\nlien de l'outil\n
Permet via proxy de voir et analyser les trames réseaux d'un appareil.
\nDocumentation neopixl
\nPossibilité de l'utiliser via un vpn sur le mobile grâce à un outil comme openVPN.
\nDocumentation neopixl
\n
framework d'animation
\nLien vers git
\nPermet de gerer la base de donner et va servir de surcouche à CoreData\nIl vaut cepandant mieux utiliser nativement CoreData\n
framework d'animation
\nLien vers git
\nPermet de gerer la base de donner et va servir de surcouche à CoreData\nIl vaut cepandant mieux utiliser nativement CoreData\n
Firebase Crashlytics
\n\nProduct presention \nDocumentation pour iOS\nDocumentation pour Android\n\nRGPD Compliant
\nUtiliser pour collecter les crashs dans une application\n
"}],"name":"FirebaseCrashlytics","title":"Firebase Crashlytics","ring":"adopt","quadrant":"tools","body":"Firebase Crashlytics
\n\nProduct presention \nDocumentation pour iOS\nDocumentation pour Android\n\nRGPD Compliant
\nUtiliser pour collecter les crashs dans une application\n
","info":"","angleFraction":0.05377843765975476,"radiusFraction":0.6298118145467413,"release":"radar","tags":["debug","crash","iOS","Android","hybrid"],"fileName":"/home/runner/work/tech-radar/tech-radar/radar/FirebaseCrashlytics.md"},{"flag":"new","featured":true,"revisions":[{"name":"FirebaseRemoteConfig","release":"radar","title":"Firebase Remote Config","ring":"adopt","quadrant":"tools","tags":["config","iOS","Android","hybrid"],"fileName":"/home/runner/work/tech-radar/tech-radar/radar/FirebaseRemoteConfig.md","body":"Firebase Remote Config
\n\nPrésentation du produit \nDocumentation pour iOS \nDocumentation pour Android \nDocumentation Neopixl \n\nRGPD Compliant
\nPermet l'envoie de variable simple ou de json complet à une application en fonction de parametre comme la version, le build variant / scheme ou meme encore des données d'analytics.
\nPermet l'envoie de variable simple ou de json complet à une application en fonction de parametre comme la version, le build variant / scheme ou meme encore des données d'analytics.
\n"}],"name":"FirebaseRemoteConfig","title":"Firebase Remote Config","ring":"adopt","quadrant":"tools","body":"Firebase Remote Config
\n\nPrésentation du produit \nDocumentation pour iOS \nDocumentation pour Android \nDocumentation Neopixl \n\nRGPD Compliant
\nPermet l'envoie de variable simple ou de json complet à une application en fonction de parametre comme la version, le build variant / scheme ou meme encore des données d'analytics.
\nPermet l'envoie de variable simple ou de json complet à une application en fonction de parametre comme la version, le build variant / scheme ou meme encore des données d'analytics.
\n","info":"","angleFraction":0.5120368226993905,"radiusFraction":0.4563970970809883,"release":"radar","tags":["config","iOS","Android","hybrid"],"fileName":"/home/runner/work/tech-radar/tech-radar/radar/FirebaseRemoteConfig.md"},{"flag":"new","featured":true,"revisions":[{"name":"GoogleMap","release":"radar","title":"Google Map","ring":"adopt","quadrant":"tools","tags":["cartograpy","Android","iOS","hybrid"],"fileName":"/home/runner/work/tech-radar/tech-radar/radar/GoogleMap.md","body":"Google Map
\nDocumentation for iOS\nDocumentation for Android\nIl est préférable d'utiliser les outils natif des OS. Donc google map sera le plus recommandé sur Android mais sur iOS on lui préferera Apple Map\n
"}],"name":"GoogleMap","title":"Google Map","ring":"adopt","quadrant":"tools","body":"Google Map
\nDocumentation for iOS\nDocumentation for Android\nIl est préférable d'utiliser les outils natif des OS. Donc google map sera le plus recommandé sur Android mais sur iOS on lui préferera Apple Map\n
","info":"","angleFraction":0.4093249584754388,"radiusFraction":0.867669911124537,"release":"radar","tags":["cartograpy","Android","iOS","hybrid"],"fileName":"/home/runner/work/tech-radar/tech-radar/radar/GoogleMap.md"},{"flag":"new","featured":true,"revisions":[{"name":"MVC","release":"radar","title":"MVC","ring":"assess","quadrant":"methods-and-patterns","tags":["pattern","Android","iOS","hybrid"],"fileName":"/home/runner/work/tech-radar/tech-radar/radar/MVC.md","body":"Design Pattern Model–view–Controller
\nDocumentation pour iOS\""}],"name":"MVC","title":"MVC","ring":"assess","quadrant":"methods-and-patterns","body":"Design Pattern Model–view–Controller
\nDocumentation pour iOS\"","info":"","angleFraction":0.32377587454671297,"radiusFraction":0.8637795829518673,"release":"radar","tags":["pattern","Android","iOS","hybrid"],"fileName":"/home/runner/work/tech-radar/tech-radar/radar/MVC.md"},{"flag":"new","featured":true,"revisions":[{"name":"MVI","release":"radar","title":"MVI","ring":"adopt","quadrant":"methods-and-patterns","tags":["pattern","Android","iOS","hybrid"],"fileName":"/home/runner/work/tech-radar/tech-radar/radar/MVI.md","body":"Design Pattern Model–view–Intent
\nDocumentation pour iOS"}],"name":"MVI","title":"MVI","ring":"adopt","quadrant":"methods-and-patterns","body":"Design Pattern Model–view–Intent
\nDocumentation pour iOS","info":"","angleFraction":0.7363679647688375,"radiusFraction":0.9614959468719708,"release":"radar","tags":["pattern","Android","iOS","hybrid"],"fileName":"/home/runner/work/tech-radar/tech-radar/radar/MVI.md"},{"flag":"new","featured":true,"revisions":[{"name":"MVP","release":"radar","title":"MVP","ring":"assess","quadrant":"methods-and-patterns","tags":["pattern","Android","iOS","hybrid"],"fileName":"/home/runner/work/tech-radar/tech-radar/radar/MVP.md","body":"Design Pattern Model–view–presenter
\nDocumentation pour iOS"}],"name":"MVP","title":"MVP","ring":"assess","quadrant":"methods-and-patterns","body":"Design Pattern Model–view–presenter
\nDocumentation pour iOS","info":"","angleFraction":0.8085621019632552,"radiusFraction":0.8747193697871842,"release":"radar","tags":["pattern","Android","iOS","hybrid"],"fileName":"/home/runner/work/tech-radar/tech-radar/radar/MVP.md"},{"flag":"new","featured":true,"revisions":[{"name":"MVVM","release":"radar","title":"MVVM","ring":"adopt","quadrant":"methods-and-patterns","tags":["pattern","Android","iOS","hybrid"],"fileName":"/home/runner/work/tech-radar/tech-radar/radar/MVVM.md","body":"Design Pattern Model–view–viewModel
\nDocumentation pour iOS"}],"name":"MVVM","title":"MVVM","ring":"adopt","quadrant":"methods-and-patterns","body":"Design Pattern Model–view–viewModel
\nDocumentation pour iOS","info":"","angleFraction":0.9941776914385203,"radiusFraction":0.6079624569038906,"release":"radar","tags":["pattern","Android","iOS","hybrid"],"fileName":"/home/runner/work/tech-radar/tech-radar/radar/MVVM.md"},{"flag":"new","featured":true,"revisions":[{"name":"Objective-C","release":"radar","title":"Objective-C","ring":"adopt","quadrant":"languages-and-frameworks","tags":["language","iOS"],"fileName":"/home/runner/work/tech-radar/tech-radar/radar/Objective-C.md","body":"Language de developpement
\nDocumentation Apple\nAncien language de developpement Apple\n
"}],"name":"Objective-C","title":"Objective-C","ring":"adopt","quadrant":"languages-and-frameworks","body":"Language de developpement
\nDocumentation Apple\nAncien language de developpement Apple\n
","info":"","angleFraction":0.0033989427610294776,"radiusFraction":0.11866384982773348,"release":"radar","tags":["language","iOS"],"fileName":"/home/runner/work/tech-radar/tech-radar/radar/Objective-C.md"},{"flag":"new","featured":true,"revisions":[{"name":"ReachFive","release":"radar","title":"ReachFive","ring":"hold","quadrant":"languages-and-frameworks","tags":["Database","login","iOS","Android"],"fileName":"/home/runner/work/tech-radar/tech-radar/radar/ReachFive.md","body":"framework de gestionlogin
\nProblèmes de la lib :
\n- implémente des librairies tierce (par exemple pour le réseau, peux provoquer des conflit si on utilise la même lib)
\n- mise à jour peu fréquente (la dernière fois, il avaient déprécier une api, et on a du les contacter pour qu’ils mettent à jour leur lib...)
\n- ne fait pas vraiment de sens (les différentes authentification possible sont listée par l’api, mais elle doivent quand même être déclarée du coté mobile pour raison de sécurité, donc même s'ils change une config, une maj des apps est nécéssaire)
\n- documentation insuffisante ou imprécise, ce qui complique les montées de version majeures
\n
framework de gestionlogin
\nProblèmes de la lib :
\n- implémente des librairies tierce (par exemple pour le réseau, peux provoquer des conflit si on utilise la même lib)
\n- mise à jour peu fréquente (la dernière fois, il avaient déprécier une api, et on a du les contacter pour qu’ils mettent à jour leur lib...)
\n- ne fait pas vraiment de sens (les différentes authentification possible sont listée par l’api, mais elle doivent quand même être déclarée du coté mobile pour raison de sécurité, donc même s'ils change une config, une maj des apps est nécéssaire)
\n- documentation insuffisante ou imprécise, ce qui complique les montées de version majeures
\n
outil d' analyse de code\nlien de l'outil\n
Permet d'analyser le code sur base d'un linter et de referencer des codes smell, des problèmes de duplication de code ou encore des vulnérabilités\n
"}],"name":"SonarQube","title":"SonarQube","ring":"adopt","quadrant":"tools","body":"outil d' analyse de code\nlien de l'outil\n
Permet d'analyser le code sur base d'un linter et de referencer des codes smell, des problèmes de duplication de code ou encore des vulnérabilités\n
","info":"","angleFraction":0.7239045444402108,"radiusFraction":0.16973231717176906,"release":"radar","tags":["code quality","Android","iOS","hybrid"],"fileName":"/home/runner/work/tech-radar/tech-radar/radar/SonarQube.md"},{"flag":"new","featured":true,"revisions":[{"name":"Swift","release":"radar","title":"Swift","ring":"adopt","quadrant":"languages-and-frameworks","tags":["language","iOS"],"fileName":"/home/runner/work/tech-radar/tech-radar/radar/Swift.md","body":"Language de developpement
\nDocumentation Apple\nLanguage de developpement Apple principal\n
"}],"name":"Swift","title":"Swift","ring":"adopt","quadrant":"languages-and-frameworks","body":"Language de developpement
\nDocumentation Apple\nLanguage de developpement Apple principal\n
","info":"","angleFraction":0.13495787264864934,"radiusFraction":0.39851801841411527,"release":"radar","tags":["language","iOS"],"fileName":"/home/runner/work/tech-radar/tech-radar/radar/Swift.md"},{"flag":"new","featured":true,"revisions":[{"name":"SwiftUI","release":"radar","title":"SwiftUI","ring":"adopt","quadrant":"languages-and-frameworks","tags":["language","iOS"],"fileName":"/home/runner/work/tech-radar/tech-radar/radar/SwiftUI.md","body":"Language de developpement
\nDocumentation Apple\nNouveau language de developpement Apple. Pour le moment le language commence à être stable en iOS 15 minimum.\nen iOS14 beaucoup de point sont à contourner pour un bon fonctionnement et des liens sont a faire avec uikit. iOS 16 apporte également des nouveautés non rétro compatible.\n
"}],"name":"SwiftUI","title":"SwiftUI","ring":"adopt","quadrant":"languages-and-frameworks","body":"Language de developpement
\nDocumentation Apple\nNouveau language de developpement Apple. Pour le moment le language commence à être stable en iOS 15 minimum.\nen iOS14 beaucoup de point sont à contourner pour un bon fonctionnement et des liens sont a faire avec uikit. iOS 16 apporte également des nouveautés non rétro compatible.\n
","info":"","angleFraction":0.28219843502999686,"radiusFraction":0.9062626092848678,"release":"radar","tags":["language","iOS"],"fileName":"/home/runner/work/tech-radar/tech-radar/radar/SwiftUI.md"},{"flag":"new","featured":true,"revisions":[{"name":"lottie","release":"radar","title":"Lottie","ring":"adopt","quadrant":"languages-and-frameworks","tags":["Animations","iOS","Android"],"fileName":"/home/runner/work/tech-radar/tech-radar/radar/lottie.md","body":"framework d'animation
\nLien vers git Android
\nPermet de jouer des animations JSON\nexemple d'animation ici\navec un compte cela permet également de tester les animations fournit par les designers pour verifier le rendu\n
framework d'animation
\nLien vers git Android
\nPermet de jouer des animations JSON\nexemple d'animation ici\navec un compte cela permet également de tester les animations fournit par les designers pour verifier le rendu\n
outil d' analyse des trames réseaux\nlien de l'outil\n
Permet via proxy de voir et analyser les trames réseaux d'un appareil.
\nA l'étude pour un potentiel remplaçant à Charles
\nl'outil est plus graphique et agréable à l'utilisation
\nPossibilité de l'utiliser via un vpn sur le mobile grâce à un outil comme openVPN.
\nDocumentation neopixl
\n
outil d' analyse des trames réseaux\nlien de l'outil\n
Permet via proxy de voir et analyser les trames réseaux d'un appareil.
\nA l'étude pour un potentiel remplaçant à Charles
\nl'outil est plus graphique et agréable à l'utilisation
\nPossibilité de l'utiliser via un vpn sur le mobile grâce à un outil comme openVPN.
\nDocumentation neopixl
\n
>1)+d+e+k+O.slice(E);break;default:e=O+d+e+k}return s(e)}return v=void 0===v?6:/[gprs]/.test(g)?Math.max(1,Math.min(21,v)):Math.max(0,Math.min(20,v)),k.toString=function(){return e+""},k}return{format:f,formatPrefix:function(e,t){var n=f(((e=es(e)).type="f",e)),r=3*Math.max(-8,Math.min(8,Math.floor(rs(t)/3))),i=Math.pow(10,-r),o=fs[8+r/3];return function(e){return n(i*e)+o}}}}function hs(e,t,n,r){var i,o=function(e,t,n){n=+n;var r=(t=+t)<(e=+e),i=r?Ma(t,e,n):Ma(e,t,n);return(r?-1:1)*(i<0?1/-i:i)}(e,t,n);switch((r=es(null==r?",f":r)).type){case"s":var a=Math.max(Math.abs(e),Math.abs(t));return null!=r.precision||isNaN(i=function(e,t){return Math.max(0,3*Math.max(-8,Math.min(8,Math.floor(rs(t)/3)))-rs(Math.abs(e)))}(o,a))||(r.precision=i),us(r,a);case"":case"e":case"g":case"p":case"r":null!=r.precision||isNaN(i=function(e,t){return e=Math.abs(e),t=Math.abs(t)-e,Math.max(0,rs(t)-rs(e))+1}(o,Math.max(Math.abs(e),Math.abs(t))))||(r.precision=i-("e"===r.type));break;case"f":case"%":null!=r.precision||isNaN(i=function(e){return Math.max(0,-rs(Math.abs(e)))}(o))||(r.precision=i-2*("%"===r.type))}return ls(r)}function ps(e){var t=e.domain;return e.ticks=function(e){var n=t();return function(e,t,n){if(!((n=+n)>0))return[];if((e=+e)===(t=+t))return[e];var r=t
/;return i&&"false"!==i&&o.test(e)?e.split(o).map((function(e,n){return t.createElement("span",{key:n,className:"multi-line"},e)})):e}function Xp(e){var t={};return Object.keys(e).filter((function(e){return/(^aria-\w+$|^role$)/.test(e)})).forEach((function(n){t[n]=e[n]})),t}function Zp(e){var t=e.length;return e.hasOwnProperty?Array.prototype.slice.call(e):new Array(t).fill().map((function(t){return e[t]}))}var Kp={dark:{text:"#fff",background:"#222",border:"transparent",arrow:"#222"},success:{text:"#fff",background:"#8DC572",border:"transparent",arrow:"#8DC572"},warning:{text:"#fff",background:"#F0AD4E",border:"transparent",arrow:"#F0AD4E"},error:{text:"#fff",background:"#BE6464",border:"transparent",arrow:"#BE6464"},info:{text:"#fff",background:"#337AB7",border:"transparent",arrow:"#337AB7"},light:{text:"#222",background:"#fff",border:"transparent",arrow:"#fff"}};var Jp,em,tm="8px 21px",nm={tooltip:3,arrow:0};function rm(e,t,n,r,i,o){return function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:tm,r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:nm,i=t.text,o=t.background,a=t.border,s=t.arrow,l=r.arrow,u=r.tooltip;return"\n \t.".concat(e," {\n\t color: ").concat(i,";\n\t background: ").concat(o,";\n\t border: 1px solid ").concat(a,";\n\t border-radius: ").concat(u,"px;\n\t padding: ").concat(n,";\n \t}\n\n \t.").concat(e,".place-top {\n margin-top: -10px;\n }\n .").concat(e,'.place-top::before {\n content: "";\n background-color: inherit;\n position: absolute;\n z-index: 2;\n width: 20px;\n height: 12px;\n }\n .').concat(e,'.place-top::after {\n content: "";\n position: absolute;\n width: 10px;\n height: 10px;\n border-top-right-radius: ').concat(l,"px;\n border: 1px solid ").concat(a,";\n background-color: ").concat(s,";\n z-index: -2;\n bottom: -6px;\n left: 50%;\n margin-left: -6px;\n transform: rotate(135deg);\n }\n\n .").concat(e,".place-bottom {\n margin-top: 10px;\n }\n .").concat(e,'.place-bottom::before {\n content: "";\n background-color: inherit;\n position: absolute;\n z-index: -1;\n width: 18px;\n height: 10px;\n }\n .').concat(e,'.place-bottom::after {\n content: "";\n position: absolute;\n width: 10px;\n height: 10px;\n border-top-right-radius: ').concat(l,"px;\n border: 1px solid ").concat(a,";\n background-color: ").concat(s,";\n z-index: -2;\n top: -6px;\n left: 50%;\n margin-left: -6px;\n transform: rotate(45deg);\n }\n\n .").concat(e,".place-left {\n margin-left: -10px;\n }\n .").concat(e,'.place-left::before {\n content: "";\n background-color: inherit;\n position: absolute;\n z-index: -1;\n width: 10px;\n height: 18px;\n }\n .').concat(e,'.place-left::after {\n content: "";\n position: absolute;\n width: 10px;\n height: 10px;\n border-top-right-radius: ').concat(l,"px;\n border: 1px solid ").concat(a,";\n background-color: ").concat(s,";\n z-index: -2;\n right: -6px;\n top: 50%;\n margin-top: -6px;\n transform: rotate(45deg);\n }\n\n .").concat(e,".place-right {\n margin-left: 10px;\n }\n .").concat(e,'.place-right::before {\n content: "";\n background-color: inherit;\n position: absolute;\n z-index: -1;\n width: 10px;\n height: 18px;\n }\n .').concat(e,'.place-right::after {\n content: "";\n position: absolute;\n width: 10px;\n height: 10px;\n border-top-right-radius: ').concat(l,"px;\n border: 1px solid ").concat(a,";\n background-color: ").concat(s,";\n z-index: -2;\n left: -6px;\n top: 50%;\n margin-top: -6px;\n transform: rotate(-135deg);\n }\n ")}(e,function(e,t,n){var r=e.text,i=e.background,o=e.border,a=e.arrow?e.arrow:e.background,s=function(e){return Kp[e]?ml({},Kp[e]):void 0}(t);r&&(s.text=r);i&&(s.background=i);n&&(s.border=o||("light"===t?"black":"white"));a&&(s.arrow=a);return s}(t,n,r),i,o)}var im,om=function(e){e.hide=function(e){Rp(Dp.HIDE,{target:e})},e.rebuild=function(){Rp(Dp.REBUILD)},e.show=function(e){Rp(Dp.SHOW,{target:e})},e.prototype.globalRebuild=function(){this.mount&&(this.unbindListener(),this.bindListener())},e.prototype.globalShow=function(e){if(this.mount){var t=!!(e&&e.detail&&e.detail.target);this.showTooltip({currentTarget:t&&e.detail.target},!0)}},e.prototype.globalHide=function(e){if(this.mount){var t=!!(e&&e.detail&&e.detail.target);this.hideTooltip({currentTarget:t&&e.detail.target},t)}}}(Jp=function(e){e.prototype.bindWindowEvents=function(e){window.removeEventListener(Dp.HIDE,this.globalHide),window.addEventListener(Dp.HIDE,this.globalHide,!1),window.removeEventListener(Dp.REBUILD,this.globalRebuild),window.addEventListener(Dp.REBUILD,this.globalRebuild,!1),window.removeEventListener(Dp.SHOW,this.globalShow),window.addEventListener(Dp.SHOW,this.globalShow,!1),e&&(window.removeEventListener("resize",this.onWindowResize),window.addEventListener("resize",this.onWindowResize,!1))},e.prototype.unbindWindowEvents=function(){window.removeEventListener(Dp.HIDE,this.globalHide),window.removeEventListener(Dp.REBUILD,this.globalRebuild),window.removeEventListener(Dp.SHOW,this.globalShow),window.removeEventListener("resize",this.onWindowResize)},e.prototype.onWindowResize=function(){this.mount&&this.hideTooltip()}}(Jp=function(e){e.prototype.isCustomEvent=function(e){return this.state.event||!!e.getAttribute("data-event")},e.prototype.customBindListener=function(e){var t=this,n=this.state,r=n.event,i=n.eventOff,o=e.getAttribute("data-event")||r,a=e.getAttribute("data-event-off")||i;o.split(" ").forEach((function(n){e.removeEventListener(n,Up.get(e,n));var r=Ip.bind(t,a);Up.set(e,n,r),e.addEventListener(n,r,!1)})),a&&a.split(" ").forEach((function(n){e.removeEventListener(n,t.hideTooltip),e.addEventListener(n,t.hideTooltip,!1)}))},e.prototype.customUnbindListener=function(e){var t=this.state,n=t.event,r=t.eventOff,i=n||e.getAttribute("data-event"),o=r||e.getAttribute("data-event-off");e.removeEventListener(i,Up.get(e,n)),o&&e.removeEventListener(o,this.hideTooltip)}}(Jp=function(e){e.prototype.isCapture=function(e){return e&&"true"===e.getAttribute("data-iscapture")||this.props.isCapture||!1}}(Jp=function(e){e.prototype.getEffect=function(e){return e.getAttribute("data-effect")||this.props.effect||"float"}}(Jp=function(e){e.prototype.isBodyMode=function(){return!!this.props.bodyMode},e.prototype.bindBodyListener=function(e){var t=this,n=this.state,r=n.event,i=n.eventOff,o=n.possibleCustomEvents,a=n.possibleCustomEventsOff,s=Hp(),l=zp(e,"data-event"),u=zp(e,"data-event-off");null!=r&&(l[r]=!0),null!=i&&(u[i]=!0),o.split(" ").forEach((function(e){return l[e]=!0})),a.split(" ").forEach((function(e){return u[e]=!0})),this.unbindBodyListener(s);var c=this.bodyModeListeners={};for(var f in null==r&&(c.mouseover=qp.bind(this,this.showTooltip,{}),c.mousemove=qp.bind(this,this.updateTooltip,{respectEffect:!0}),c.mouseout=qp.bind(this,this.hideTooltip,{})),l)c[f]=qp.bind(this,(function(e){var n=e.currentTarget.getAttribute("data-event-off")||i;Ip.call(t,n,e)}),{customEvent:!0});for(var d in u)c[d]=qp.bind(this,this.hideTooltip,{customEvent:!0});for(var h in c)s.addEventListener(h,c[h])},e.prototype.unbindBodyListener=function(e){e=e||Hp();var t=this.bodyModeListeners;for(var n in t)e.removeEventListener(n,t[n])}}((em=function(e){!function(e,t){if("function"!==typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&wl(e,t)}(a,e);var n,r,i,o=_l(a);function a(e){var t;return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,a),(t=o.call(this,e)).state={uuid:e.uuid||"t"+hl(),place:e.place||"top",desiredPlace:e.place||"top",type:e.type||"dark",effect:e.effect||"float",show:!1,border:!1,borderClass:"border",customColors:{},customRadius:{},offset:{},padding:e.padding,extraClass:"",html:!1,delayHide:0,delayShow:0,event:e.event||null,eventOff:e.eventOff||null,currentEvent:null,currentTarget:null,ariaProps:Xp(e),isEmptyTip:!1,disable:!1,possibleCustomEvents:e.possibleCustomEvents||"",possibleCustomEventsOff:e.possibleCustomEventsOff||"",originTooltip:null,isMultiline:!1},t.bind(["showTooltip","updateTooltip","hideTooltip","hideTooltipOnScroll","getTooltipContent","globalRebuild","globalShow","globalHide","onWindowResize","mouseOnToolTip"]),t.mount=!0,t.delayShowLoop=null,t.delayHideLoop=null,t.delayReshow=null,t.intervalUpdateContent=null,t}return n=a,r=[{key:"bind",value:function(e){var t=this;e.forEach((function(e){t[e]=t[e].bind(t)}))}},{key:"componentDidMount",value:function(){var e=this.props;e.insecure;var t=e.resizeHide,n=e.disableInternalStyle;this.mount=!0,this.bindListener(),this.bindWindowEvents(t),n||this.injectStyles()}},{key:"componentWillUnmount",value:function(){this.mount=!1,this.clearTimer(),this.unbindListener(),this.removeScrollListener(this.state.currentTarget),this.unbindWindowEvents()}},{key:"injectStyles",value:function(){var e=this.tooltipRef;if(e){for(var t,n=e.parentNode;n.parentNode;)n=n.parentNode;switch(n.constructor.name){case"Document":case"HTMLDocument":case void 0:t=n.head;break;default:t=n}if(!t.querySelector("style[data-react-tooltip]")){var r=document.createElement("style");r.textContent='.__react_component_tooltip {\n border-radius: 3px;\n display: inline-block;\n font-size: 13px;\n left: -999em;\n opacity: 0;\n position: fixed;\n pointer-events: none;\n transition: opacity 0.3s ease-out;\n top: -999em;\n visibility: hidden;\n z-index: 999;\n}\n.__react_component_tooltip.allow_hover, .__react_component_tooltip.allow_click {\n pointer-events: auto;\n}\n.__react_component_tooltip::before, .__react_component_tooltip::after {\n content: "";\n width: 0;\n height: 0;\n position: absolute;\n}\n.__react_component_tooltip.show {\n opacity: 0.9;\n margin-top: 0;\n margin-left: 0;\n visibility: visible;\n}\n.__react_component_tooltip.place-top::before {\n bottom: 0;\n left: 50%;\n margin-left: -11px;\n}\n.__react_component_tooltip.place-bottom::before {\n top: 0;\n left: 50%;\n margin-left: -11px;\n}\n.__react_component_tooltip.place-left::before {\n right: 0;\n top: 50%;\n margin-top: -9px;\n}\n.__react_component_tooltip.place-right::before {\n left: 0;\n top: 50%;\n margin-top: -9px;\n}\n.__react_component_tooltip .multi-line {\n display: block;\n padding: 2px 0;\n text-align: center;\n}',r.setAttribute("data-react-tooltip","true"),t.appendChild(r)}}}},{key:"mouseOnToolTip",value:function(){return!(!this.state.show||!this.tooltipRef)&&(this.tooltipRef.matches||(this.tooltipRef.msMatchesSelector?this.tooltipRef.matches=this.tooltipRef.msMatchesSelector:this.tooltipRef.matches=this.tooltipRef.mozMatchesSelector),this.tooltipRef.matches(":hover"))}},{key:"getTargetArray",value:function(e){var t,n=[];if(e){var r=e.replace(/\\/g,"\\\\").replace(/"/g,'\\"');t='[data-tip][data-for="'.concat(r,'"]')}else t="[data-tip]:not([data-for])";return Zp(document.getElementsByTagName("*")).filter((function(e){return e.shadowRoot})).forEach((function(e){n=n.concat(Zp(e.shadowRoot.querySelectorAll(t)))})),n.concat(Zp(document.querySelectorAll(t)))}},{key:"bindListener",value:function(){var e=this,t=this.props,n=t.id,r=t.globalEventOff,i=t.isCapture,o=this.getTargetArray(n);o.forEach((function(t){null===t.getAttribute("currentItem")&&t.setAttribute("currentItem","false"),e.unbindBasicListener(t),e.isCustomEvent(t)&&e.customUnbindListener(t)})),this.isBodyMode()?this.bindBodyListener(o):o.forEach((function(t){var n=e.isCapture(t),r=e.getEffect(t);e.isCustomEvent(t)?e.customBindListener(t):(t.addEventListener("mouseenter",e.showTooltip,n),t.addEventListener("focus",e.showTooltip,n),"float"===r&&t.addEventListener("mousemove",e.updateTooltip,n),t.addEventListener("mouseleave",e.hideTooltip,n),t.addEventListener("blur",e.hideTooltip,n))})),r&&(window.removeEventListener(r,this.hideTooltip),window.addEventListener(r,this.hideTooltip,i)),this.bindRemovalTracker()}},{key:"unbindListener",value:function(){var e=this,t=this.props,n=t.id,r=t.globalEventOff;this.isBodyMode()?this.unbindBodyListener():this.getTargetArray(n).forEach((function(t){e.unbindBasicListener(t),e.isCustomEvent(t)&&e.customUnbindListener(t)})),r&&window.removeEventListener(r,this.hideTooltip),this.unbindRemovalTracker()}},{key:"unbindBasicListener",value:function(e){var t=this.isCapture(e);e.removeEventListener("mouseenter",this.showTooltip,t),e.removeEventListener("mousemove",this.updateTooltip,t),e.removeEventListener("mouseleave",this.hideTooltip,t)}},{key:"getTooltipContent",value:function(){var e,t=this.props,n=t.getContent,r=t.children;return n&&(e=Array.isArray(n)?n[0]&&n[0](this.state.originTooltip):n(this.state.originTooltip)),Qp(this.state.originTooltip,r,e,this.state.isMultiline)}},{key:"isEmptyTip",value:function(e){return"string"===typeof e&&""===e||null===e}},{key:"showTooltip",value:function(e,t){if(this.tooltipRef){if(t&&!this.getTargetArray(this.props.id).some((function(t){return t===e.currentTarget})))return;var n=this.props,r=n.multiline,i=n.getContent,o=e.currentTarget.getAttribute("data-tip"),a=e.currentTarget.getAttribute("data-multiline")||r||!1,s=e instanceof window.FocusEvent||t,l=!0;e.currentTarget.getAttribute("data-scroll-hide")?l="true"===e.currentTarget.getAttribute("data-scroll-hide"):null!=this.props.scrollHide&&(l=this.props.scrollHide),e&&e.currentTarget&&e.currentTarget.setAttribute&&e.currentTarget.setAttribute("aria-describedby",this.props.id||this.state.uuid);var u=e.currentTarget.getAttribute("data-place")||this.props.place||"top",c=s?"solid":this.getEffect(e.currentTarget),f=e.currentTarget.getAttribute("data-offset")||this.props.offset||{},d=Bp(e,e.currentTarget,this.tooltipRef,u.split(",")[0],u,c,f);d.position&&this.props.overridePosition&&(d.position=this.props.overridePosition(d.position,e,e.currentTarget,this.tooltipRef,u,u,c,f));var h=d.isNewState?d.newState.place:u.split(",")[0];this.clearTimer();var p=e.currentTarget,m=this.state.show?p.getAttribute("data-delay-update")||this.props.delayUpdate:0,v=this,y=function(){v.setState({originTooltip:o,isMultiline:a,desiredPlace:u,place:h,type:p.getAttribute("data-type")||v.props.type||"dark",customColors:{text:p.getAttribute("data-text-color")||v.props.textColor||null,background:p.getAttribute("data-background-color")||v.props.backgroundColor||null,border:p.getAttribute("data-border-color")||v.props.borderColor||null,arrow:p.getAttribute("data-arrow-color")||v.props.arrowColor||null},customRadius:{tooltip:p.getAttribute("data-tooltip-radius")||v.props.tooltipRadius||"3",arrow:p.getAttribute("data-arrow-radius")||v.props.arrowRadius||"0"},effect:c,offset:f,padding:p.getAttribute("data-padding")||v.props.padding,html:(p.getAttribute("data-html")?"true"===p.getAttribute("data-html"):v.props.html)||!1,delayShow:p.getAttribute("data-delay-show")||v.props.delayShow||0,delayHide:p.getAttribute("data-delay-hide")||v.props.delayHide||0,delayUpdate:p.getAttribute("data-delay-update")||v.props.delayUpdate||0,border:(p.getAttribute("data-border")?"true"===p.getAttribute("data-border"):v.props.border)||!1,borderClass:p.getAttribute("data-border-class")||v.props.borderClass||"border",extraClass:p.getAttribute("data-class")||v.props.class||v.props.className||"",disable:(p.getAttribute("data-tip-disable")?"true"===p.getAttribute("data-tip-disable"):v.props.disable)||!1,currentTarget:p},(function(){l&&v.addScrollListener(v.state.currentTarget),v.updateTooltip(e),i&&Array.isArray(i)&&(v.intervalUpdateContent=setInterval((function(){if(v.mount){var e=v.props.getContent,t=Qp(o,"",e[0](),a),n=v.isEmptyTip(t);v.setState({isEmptyTip:n}),v.updatePosition()}}),i[1]))}))};m?this.delayReshow=setTimeout(y,m):y()}}},{key:"updateTooltip",value:function(e){var t=this,n=this.state,r=n.delayShow,i=n.disable,o=this.props,a=o.afterShow,s=o.disable,l=this.getTooltipContent(),u=e.currentTarget||e.target;if(!this.mouseOnToolTip()&&!(this.isEmptyTip(l)||i||s)){var c=this.state.show?0:parseInt(r,10),f=function(){if(Array.isArray(l)&&l.length>0||l){var n=!t.state.show;t.setState({currentEvent:e,currentTarget:u,show:!0},(function(){t.updatePosition((function(){n&&a&&a(e)}))}))}};this.delayShowLoop&&clearTimeout(this.delayShowLoop),c?this.delayShowLoop=setTimeout(f,c):(this.delayShowLoop=null,f())}}},{key:"listenForTooltipExit",value:function(){this.state.show&&this.tooltipRef&&this.tooltipRef.addEventListener("mouseleave",this.hideTooltip)}},{key:"removeListenerForTooltipExit",value:function(){this.state.show&&this.tooltipRef&&this.tooltipRef.removeEventListener("mouseleave",this.hideTooltip)}},{key:"hideTooltip",value:function(e,t){var n=this,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{isScroll:!1},i=this.state.disable,o=r.isScroll?0:this.state.delayHide,a=this.props,s=a.afterHide,l=a.disable,u=this.getTooltipContent();if(this.mount&&!(this.isEmptyTip(u)||i||l)){if(t&&(!this.getTargetArray(this.props.id).some((function(t){return t===e.currentTarget}))||!this.state.show))return;e&&e.currentTarget&&e.currentTarget.removeAttribute&&e.currentTarget.removeAttribute("aria-describedby");var c=function(){var t=n.state.show;n.mouseOnToolTip()?n.listenForTooltipExit():(n.removeListenerForTooltipExit(),n.setState({show:!1},(function(){n.removeScrollListener(n.state.currentTarget),t&&s&&s(e)})))};this.clearTimer(),o?this.delayHideLoop=setTimeout(c,parseInt(o,10)):c()}}},{key:"hideTooltipOnScroll",value:function(e,t){this.hideTooltip(e,t,{isScroll:!0})}},{key:"addScrollListener",value:function(e){var t=this.isCapture(e);window.addEventListener("scroll",this.hideTooltipOnScroll,t)}},{key:"removeScrollListener",value:function(e){var t=this.isCapture(e);window.removeEventListener("scroll",this.hideTooltipOnScroll,t)}},{key:"updatePosition",value:function(e){var t=this,n=this.state,r=n.currentEvent,i=n.currentTarget,o=n.place,a=n.desiredPlace,s=n.effect,l=n.offset,u=this.tooltipRef,c=Bp(r,i,u,o,a,s,l);if(c.position&&this.props.overridePosition&&(c.position=this.props.overridePosition(c.position,r,i,u,o,a,s,l)),c.isNewState)return this.setState(c.newState,(function(){t.updatePosition(e)}));e&&"function"===typeof e&&e(),u.style.left=c.position.left+"px",u.style.top=c.position.top+"px"}},{key:"clearTimer",value:function(){this.delayShowLoop&&(clearTimeout(this.delayShowLoop),this.delayShowLoop=null),this.delayHideLoop&&(clearTimeout(this.delayHideLoop),this.delayHideLoop=null),this.delayReshow&&(clearTimeout(this.delayReshow),this.delayReshow=null),this.intervalUpdateContent&&(clearInterval(this.intervalUpdateContent),this.intervalUpdateContent=null)}},{key:"hasCustomColors",value:function(){var e=this;return Boolean(Object.keys(this.state.customColors).find((function(t){return"border"!==t&&e.state.customColors[t]}))||this.state.border&&this.state.customColors.border)}},{key:"render",value:function(){var e=this,n=this.state,r=n.extraClass,i=n.html,o=n.ariaProps,s=n.disable,l=n.uuid,u=this.getTooltipContent(),c=this.isEmptyTip(u),f=this.props.disableInternalStyle?"":rm(this.state.uuid,this.state.customColors,this.state.type,this.state.border,this.state.padding,this.state.customRadius),d="__react_component_tooltip"+" ".concat(this.state.uuid)+(!this.state.show||s||c?"":" show")+(this.state.border?" "+this.state.borderClass:"")+" place-".concat(this.state.place)+" type-".concat(this.hasCustomColors()?"custom":this.state.type)+(this.props.delayUpdate?" allow_hover":"")+(this.props.clickable?" allow_click":""),h=this.props.wrapper;a.supportedWrappers.indexOf(h)<0&&(h=a.defaultProps.wrapper);var p=[d,r].filter(Boolean).join(" ");if(i){var m="".concat(u).concat(f?'\n"):"");return t.createElement(h,gl({className:"".concat(p),id:this.props.id||l,ref:function(t){return e.tooltipRef=t}},o,{"data-id":"tooltip",dangerouslySetInnerHTML:{__html:m}}))}return t.createElement(h,gl({className:"".concat(p),id:this.props.id||l},o,{ref:function(t){return e.tooltipRef=t},"data-id":"tooltip"}),f&&t.createElement("style",{dangerouslySetInnerHTML:{__html:f},"aria-hidden":"true"}),u)}}],i=[{key:"propTypes",get:function(){return{uuid:al().string,children:al().any,place:al().string,type:al().string,effect:al().string,offset:al().object,padding:al().string,multiline:al().bool,border:al().bool,borderClass:al().string,textColor:al().string,backgroundColor:al().string,borderColor:al().string,arrowColor:al().string,arrowRadius:al().string,tooltipRadius:al().string,insecure:al().bool,class:al().string,className:al().string,id:al().string,html:al().bool,delayHide:al().number,delayUpdate:al().number,delayShow:al().number,event:al().string,eventOff:al().string,isCapture:al().bool,globalEventOff:al().string,getContent:al().any,afterShow:al().func,afterHide:al().func,overridePosition:al().func,disable:al().bool,scrollHide:al().bool,resizeHide:al().bool,wrapper:al().string,bodyMode:al().bool,possibleCustomEvents:al().string,possibleCustomEventsOff:al().string,clickable:al().bool,disableInternalStyle:al().bool}}},{key:"getDerivedStateFromProps",value:function(e,t){var n=t.ariaProps,r=Xp(e);return Object.keys(r).some((function(e){return r[e]!==n[e]}))?ml(ml({},t),{},{ariaProps:r}):null}}],r&&vl(n.prototype,r),i&&vl(n,i),Object.defineProperty(n,"prototype",{writable:!1}),a}(t.Component),yl(em,"defaultProps",{insecure:!0,resizeHide:!0,wrapper:"div",clickable:!1}),yl(em,"supportedWrappers",["div","span"]),yl(em,"displayName","ReactTooltip"),(im=Jp=em).prototype.bindRemovalTracker=function(){var e=this,t=window.MutationObserver||window.WebKitMutationObserver||window.MozMutationObserver;if(null!=t){var n=new t((function(t){for(var n=0;n